From acd3013d9d75cec113061f4c78dda223d28a41ee Mon Sep 17 00:00:00 2001 From: "ulan@chromium.org" Date: Mon, 12 Nov 2012 15:33:31 +0000 Subject: [PATCH] Speed up native error check. BUG=148757 TEST=largeObj test from the bug is 2x faster. R=yangguo@chromium.org Review URL: https://chromiumcodereview.appspot.com/11377100 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12938 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/api.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/api.cc b/src/api.cc index 4820f9d..e864307 100644 --- a/src/api.cc +++ b/src/api.cc @@ -2309,7 +2309,11 @@ static i::Object* LookupBuiltin(i::Isolate* isolate, static bool CheckConstructor(i::Isolate* isolate, i::Handle obj, const char* class_name) { - return obj->map()->constructor() == LookupBuiltin(isolate, class_name); + i::Object* constr = obj->map()->constructor(); + if (!constr->IsJSFunction()) return false; + i::JSFunction* func = i::JSFunction::cast(constr); + return func->shared()->native() && + constr == LookupBuiltin(isolate, class_name); } -- 2.7.4