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

Side by Side 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, 1 month 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 unified diff | Download patch
« no previous file with comments | « src/api.h ('k') | src/code-stubs.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/api.h" 5 #include "src/api.h"
6 6
7 #include <string.h> // For memcpy, strlen. 7 #include <string.h> // For memcpy, strlen.
8 #ifdef V8_USE_ADDRESS_SANITIZER 8 #ifdef V8_USE_ADDRESS_SANITIZER
9 #include <sanitizer/asan_interface.h> 9 #include <sanitizer/asan_interface.h>
10 #endif // V8_USE_ADDRESS_SANITIZER 10 #endif // V8_USE_ADDRESS_SANITIZER
(...skipping 907 matching lines...) Expand 10 before | Expand all | Expand 10 after
918 } 918 }
919 919
920 920
921 Local<AccessorSignature> AccessorSignature::New( 921 Local<AccessorSignature> AccessorSignature::New(
922 Isolate* isolate, 922 Isolate* isolate,
923 Handle<FunctionTemplate> receiver) { 923 Handle<FunctionTemplate> receiver) {
924 return Utils::AccessorSignatureToLocal(Utils::OpenHandle(*receiver)); 924 return Utils::AccessorSignatureToLocal(Utils::OpenHandle(*receiver));
925 } 925 }
926 926
927 927
928 void Accessor::setOptimizeLevel(AccessorOptimizeLevel jit) {
929 Utils::OpenHandle(this)->set_can_fast_call(jit != kOptimizeNone);
930 }
931
932
928 template<typename Operation> 933 template<typename Operation>
929 static Local<Operation> NewDescriptor( 934 static Local<Operation> NewDescriptor(
930 Isolate* isolate, 935 Isolate* isolate,
931 const i::DeclaredAccessorDescriptorData& data, 936 const i::DeclaredAccessorDescriptorData& data,
932 Data* previous_descriptor) { 937 Data* previous_descriptor) {
933 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); 938 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate);
934 i::Handle<i::DeclaredAccessorDescriptor> previous = 939 i::Handle<i::DeclaredAccessorDescriptor> previous =
935 i::Handle<i::DeclaredAccessorDescriptor>(); 940 i::Handle<i::DeclaredAccessorDescriptor>();
936 if (previous_descriptor != NULL) { 941 if (previous_descriptor != NULL) {
937 previous = Utils::OpenHandle( 942 previous = Utils::OpenHandle(
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
1286 // TODO(dcarney): remove this with ObjectTemplate::SetAccessor 1291 // TODO(dcarney): remove this with ObjectTemplate::SetAccessor
1287 static inline i::Handle<i::TemplateInfo> GetTemplateInfo( 1292 static inline i::Handle<i::TemplateInfo> GetTemplateInfo(
1288 i::Isolate* isolate, 1293 i::Isolate* isolate,
1289 ObjectTemplate* object_template) { 1294 ObjectTemplate* object_template) {
1290 EnsureConstructor(isolate, object_template); 1295 EnsureConstructor(isolate, object_template);
1291 return Utils::OpenHandle(object_template); 1296 return Utils::OpenHandle(object_template);
1292 } 1297 }
1293 1298
1294 1299
1295 template<typename Getter, typename Setter, typename Data, typename Template> 1300 template<typename Getter, typename Setter, typename Data, typename Template>
1296 static bool TemplateSetAccessor( 1301 static inline Local<Accessor> TemplateSetAccessorEx(
1297 Template* template_obj, 1302 Template* template_obj,
1298 v8::Local<Name> name, 1303 v8::Local<Name> name,
1299 Getter getter, 1304 Getter getter,
1300 Setter setter, 1305 Setter setter,
1301 Data data, 1306 Data data,
1302 AccessControl settings, 1307 AccessControl settings,
1303 PropertyAttribute attribute, 1308 PropertyAttribute attribute,
1304 v8::Local<AccessorSignature> signature) { 1309 v8::Local<AccessorSignature> signature) {
1305 i::Isolate* isolate = Utils::OpenHandle(template_obj)->GetIsolate(); 1310 i::Isolate* isolate = Utils::OpenHandle(template_obj)->GetIsolate();
1306 ENTER_V8(isolate); 1311 ENTER_V8(isolate);
1307 i::HandleScope scope(isolate); 1312 i::HandleScope scope(isolate);
1308 i::Handle<i::AccessorInfo> obj = MakeAccessorInfo( 1313 i::Handle<i::AccessorInfo> obj = MakeAccessorInfo(
1309 name, getter, setter, data, settings, attribute, signature); 1314 name, getter, setter, data, settings, attribute, signature);
1310 if (obj.is_null()) return false; 1315 if (obj.is_null()) return Local<Accessor>();
1316 obj->set_can_fast_call(false);
1311 i::Handle<i::TemplateInfo> info = GetTemplateInfo(isolate, template_obj); 1317 i::Handle<i::TemplateInfo> info = GetTemplateInfo(isolate, template_obj);
1312 AddPropertyToTemplate(info, obj); 1318 AddPropertyToTemplate(info, obj);
1313 return true; 1319 return Utils::ToLocal(scope.CloseAndEscape(obj));
1320 }
1321
1322 template<typename Getter, typename Setter, typename Data, typename Template>
1323 static bool TemplateSetAccessor(
1324 Template* template_obj,
1325 v8::Local<Name> name,
1326 Getter getter,
1327 Setter setter,
1328 Data data,
1329 AccessControl settings,
1330 PropertyAttribute attribute,
1331 v8::Local<AccessorSignature> signature) {
1332 return (!(TemplateSetAccessorEx(
1333 template_obj, name, getter, setter,
1334 data, settings, attribute, signature).IsEmpty()));
1314 } 1335 }
1315 1336
1316 1337
1317 bool Template::SetDeclaredAccessor( 1338 bool Template::SetDeclaredAccessor(
1318 Local<Name> name, 1339 Local<Name> name,
1319 Local<DeclaredAccessorDescriptor> descriptor, 1340 Local<DeclaredAccessorDescriptor> descriptor,
1320 PropertyAttribute attribute, 1341 PropertyAttribute attribute,
1321 Local<AccessorSignature> signature, 1342 Local<AccessorSignature> signature,
1322 AccessControl settings) { 1343 AccessControl settings) {
1323 void* null = NULL; 1344 void* null = NULL;
(...skipping 30 matching lines...) Expand all
1354 AccessorGetterCallback getter, 1375 AccessorGetterCallback getter,
1355 AccessorSetterCallback setter, 1376 AccessorSetterCallback setter,
1356 v8::Handle<Value> data, 1377 v8::Handle<Value> data,
1357 AccessControl settings, 1378 AccessControl settings,
1358 PropertyAttribute attribute, 1379 PropertyAttribute attribute,
1359 v8::Handle<AccessorSignature> signature) { 1380 v8::Handle<AccessorSignature> signature) {
1360 TemplateSetAccessor( 1381 TemplateSetAccessor(
1361 this, name, getter, setter, data, settings, attribute, signature); 1382 this, name, getter, setter, data, settings, attribute, signature);
1362 } 1383 }
1363 1384
1385 Local<Accessor> ObjectTemplate::SetAccessorEx(v8::Handle<String> name,
1386 AccessorGetterCallback getter,
1387 AccessorSetterCallback setter,
1388 v8::Handle<Value> data,
1389 AccessControl settings,
1390 PropertyAttribute attribute,
1391 v8::Handle<AccessorSignature> signature) {
1392 return TemplateSetAccessorEx(
1393 this, name, getter, setter, data, settings, attribute, signature);
1394 }
1364 1395
1365 void ObjectTemplate::SetAccessor(v8::Handle<Name> name, 1396 void ObjectTemplate::SetAccessor(v8::Handle<Name> name,
1366 AccessorNameGetterCallback getter, 1397 AccessorNameGetterCallback getter,
1367 AccessorNameSetterCallback setter, 1398 AccessorNameSetterCallback setter,
1368 v8::Handle<Value> data, 1399 v8::Handle<Value> data,
1369 AccessControl settings, 1400 AccessControl settings,
1370 PropertyAttribute attribute, 1401 PropertyAttribute attribute,
1371 v8::Handle<AccessorSignature> signature) { 1402 v8::Handle<AccessorSignature> signature) {
1372 TemplateSetAccessor( 1403 TemplateSetAccessor(
1373 this, name, getter, setter, data, settings, attribute, signature); 1404 this, name, getter, setter, data, settings, attribute, signature);
(...skipping 6364 matching lines...) Expand 10 before | Expand all | Expand 10 after
7738 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); 7769 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate());
7739 Address callback_address = 7770 Address callback_address =
7740 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); 7771 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback));
7741 VMState<EXTERNAL> state(isolate); 7772 VMState<EXTERNAL> state(isolate);
7742 ExternalCallbackScope call_scope(isolate, callback_address); 7773 ExternalCallbackScope call_scope(isolate, callback_address);
7743 callback(info); 7774 callback(info);
7744 } 7775 }
7745 7776
7746 7777
7747 } } // namespace v8::internal 7778 } } // namespace v8::internal
OLDNEW
« 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