Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(900)

Unified Diff: src/api.cc

Issue 697603002: Optimized nodeType dom binding by removing HandleScope and the preparation of ordinary c function c… (Closed) Base URL: https://chromium.googlesource.com/external/v8.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/api.h ('k') | src/code-stubs.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/api.cc
diff --git a/src/api.cc b/src/api.cc
index 6a7c40a06c96cc3246fde4c52f4cf94657e836da..1a0d1f899f202ccbc97b7c28b54b5a26e66d3a31 100644
--- a/src/api.cc
+++ b/src/api.cc
@@ -925,6 +925,11 @@ Local<AccessorSignature> AccessorSignature::New(
}
+void Accessor::setOptimizeLevel(AccessorOptimizeLevel jit) {
+ Utils::OpenHandle(this)->set_can_fast_call(jit != kOptimizeNone);
+}
+
+
template<typename Operation>
static Local<Operation> NewDescriptor(
Isolate* isolate,
@@ -1293,7 +1298,7 @@ static inline i::Handle<i::TemplateInfo> GetTemplateInfo(
template<typename Getter, typename Setter, typename Data, typename Template>
-static bool TemplateSetAccessor(
+static inline Local<Accessor> TemplateSetAccessorEx(
Template* template_obj,
v8::Local<Name> name,
Getter getter,
@@ -1307,10 +1312,26 @@ static bool TemplateSetAccessor(
i::HandleScope scope(isolate);
i::Handle<i::AccessorInfo> obj = MakeAccessorInfo(
name, getter, setter, data, settings, attribute, signature);
- if (obj.is_null()) return false;
+ if (obj.is_null()) return Local<Accessor>();
+ obj->set_can_fast_call(false);
i::Handle<i::TemplateInfo> info = GetTemplateInfo(isolate, template_obj);
AddPropertyToTemplate(info, obj);
- return true;
+ return Utils::ToLocal(scope.CloseAndEscape(obj));
+}
+
+template<typename Getter, typename Setter, typename Data, typename Template>
+static bool TemplateSetAccessor(
+ Template* template_obj,
+ v8::Local<Name> name,
+ Getter getter,
+ Setter setter,
+ Data data,
+ AccessControl settings,
+ PropertyAttribute attribute,
+ v8::Local<AccessorSignature> signature) {
+ return (!(TemplateSetAccessorEx(
+ template_obj, name, getter, setter,
+ data, settings, attribute, signature).IsEmpty()));
}
@@ -1361,6 +1382,16 @@ void ObjectTemplate::SetAccessor(v8::Handle<String> name,
this, name, getter, setter, data, settings, attribute, signature);
}
+Local<Accessor> ObjectTemplate::SetAccessorEx(v8::Handle<String> name,
+ AccessorGetterCallback getter,
+ AccessorSetterCallback setter,
+ v8::Handle<Value> data,
+ AccessControl settings,
+ PropertyAttribute attribute,
+ v8::Handle<AccessorSignature> signature) {
+ return TemplateSetAccessorEx(
+ this, name, getter, setter, data, settings, attribute, signature);
+}
void ObjectTemplate::SetAccessor(v8::Handle<Name> name,
AccessorNameGetterCallback getter,
« no previous file with comments | « src/api.h ('k') | src/code-stubs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698