summaryrefslogtreecommitdiff
path: root/src/node_util.cc
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2015-12-01 11:27:39 -0500
committercjihrig <cjihrig@gmail.com>2015-12-02 11:16:21 -0500
commit6526ae7b37316e301ff12accd2671640ae4a48c1 (patch)
tree4334de83a914df9bc5daac8434b0d59acdea5c91 /src/node_util.cc
parentfbcd687c08363053e2aff6ad29d906cc8df97f79 (diff)
downloadandroid-node-v8-6526ae7b37316e301ff12accd2671640ae4a48c1.tar.gz
android-node-v8-6526ae7b37316e301ff12accd2671640ae4a48c1.tar.bz2
android-node-v8-6526ae7b37316e301ff12accd2671640ae4a48c1.zip
util: determine object types in C++
Determine object types of regular expressions, Dates, Maps, and Sets in the C++ layer instead of depending on toString() behavior in JavaScript. PR-URL: https://github.com/nodejs/node/pull/4100 Reviewed-By: Evan Lucas <evanlucas@me.com> Reviewed-By: Michaƫl Zasso <mic.besace@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'src/node_util.cc')
-rw-r--r--src/node_util.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/node_util.cc b/src/node_util.cc
index dad005d760..b7eba15510 100644
--- a/src/node_util.cc
+++ b/src/node_util.cc
@@ -13,12 +13,37 @@ using v8::Object;
using v8::String;
using v8::Value;
+
+static void IsRegExp(const FunctionCallbackInfo<Value>& args) {
+ CHECK_EQ(1, args.Length());
+ args.GetReturnValue().Set(args[0]->IsRegExp());
+}
+
+
+static void IsDate(const FunctionCallbackInfo<Value>& args) {
+ CHECK_EQ(1, args.Length());
+ args.GetReturnValue().Set(args[0]->IsDate());
+}
+
+
+static void IsMap(const FunctionCallbackInfo<Value>& args) {
+ CHECK_EQ(1, args.Length());
+ args.GetReturnValue().Set(args[0]->IsMap());
+}
+
+
static void IsMapIterator(const FunctionCallbackInfo<Value>& args) {
CHECK_EQ(1, args.Length());
args.GetReturnValue().Set(args[0]->IsMapIterator());
}
+static void IsSet(const FunctionCallbackInfo<Value>& args) {
+ CHECK_EQ(1, args.Length());
+ args.GetReturnValue().Set(args[0]->IsSet());
+}
+
+
static void IsSetIterator(const FunctionCallbackInfo<Value>& args) {
CHECK_EQ(1, args.Length());
args.GetReturnValue().Set(args[0]->IsSetIterator());
@@ -68,7 +93,11 @@ void Initialize(Local<Object> target,
Local<Value> unused,
Local<Context> context) {
Environment* env = Environment::GetCurrent(context);
+ env->SetMethod(target, "isRegExp", IsRegExp);
+ env->SetMethod(target, "isDate", IsDate);
+ env->SetMethod(target, "isMap", IsMap);
env->SetMethod(target, "isMapIterator", IsMapIterator);
+ env->SetMethod(target, "isSet", IsSet);
env->SetMethod(target, "isSetIterator", IsSetIterator);
env->SetMethod(target, "isPromise", IsPromise);
env->SetMethod(target, "isTypedArray", IsTypedArray);