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

Side by Side Diff: src/api.cc

Issue 862923002: CHECK that FunctionTemplates are not modified after first instantiation (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 11 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 unified diff | Download patch
« no previous file with comments | « include/v8.h ('k') | src/factory.cc » ('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 779 matching lines...) Expand 10 before | Expand all | Expand 10 after
790 i_isolate); 790 i_isolate);
791 if (result->IsUndefined()) { 791 if (result->IsUndefined()) {
792 v8::Isolate* isolate = reinterpret_cast<v8::Isolate*>(i_isolate); 792 v8::Isolate* isolate = reinterpret_cast<v8::Isolate*>(i_isolate);
793 result = Utils::OpenHandle(*ObjectTemplate::New(isolate)); 793 result = Utils::OpenHandle(*ObjectTemplate::New(isolate));
794 Utils::OpenHandle(this)->set_prototype_template(*result); 794 Utils::OpenHandle(this)->set_prototype_template(*result);
795 } 795 }
796 return ToApiHandle<ObjectTemplate>(result); 796 return ToApiHandle<ObjectTemplate>(result);
797 } 797 }
798 798
799 799
800 static void EnsureNotInstantiated(i::Handle<i::FunctionTemplateInfo> info,
801 const char* func) {
802 Utils::ApiCheck(!info->instantiated(), func,
803 "FunctionTemplate already instantiated");
804 }
805
806
800 void FunctionTemplate::Inherit(v8::Handle<FunctionTemplate> value) { 807 void FunctionTemplate::Inherit(v8::Handle<FunctionTemplate> value) {
801 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 808 auto info = Utils::OpenHandle(this);
809 EnsureNotInstantiated(info, "v8::FunctionTemplate::Inherit");
810 i::Isolate* isolate = info->GetIsolate();
802 ENTER_V8(isolate); 811 ENTER_V8(isolate);
803 Utils::OpenHandle(this)->set_parent_template(*Utils::OpenHandle(*value)); 812 info->set_parent_template(*Utils::OpenHandle(*value));
804 } 813 }
805 814
806 815
807 static Local<FunctionTemplate> FunctionTemplateNew( 816 static Local<FunctionTemplate> FunctionTemplateNew(
808 i::Isolate* isolate, 817 i::Isolate* isolate,
809 FunctionCallback callback, 818 FunctionCallback callback,
810 v8::Handle<Value> data, 819 v8::Handle<Value> data,
811 v8::Handle<Signature> signature, 820 v8::Handle<Signature> signature,
812 int length, 821 int length,
813 bool do_not_cache) { 822 bool do_not_cache) {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
903 912
904 913
905 #define SET_FIELD_WRAPPED(obj, setter, cdata) do { \ 914 #define SET_FIELD_WRAPPED(obj, setter, cdata) do { \
906 i::Handle<i::Object> foreign = FromCData(obj->GetIsolate(), cdata); \ 915 i::Handle<i::Object> foreign = FromCData(obj->GetIsolate(), cdata); \
907 (obj)->setter(*foreign); \ 916 (obj)->setter(*foreign); \
908 } while (false) 917 } while (false)
909 918
910 919
911 void FunctionTemplate::SetCallHandler(FunctionCallback callback, 920 void FunctionTemplate::SetCallHandler(FunctionCallback callback,
912 v8::Handle<Value> data) { 921 v8::Handle<Value> data) {
913 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 922 auto info = Utils::OpenHandle(this);
923 EnsureNotInstantiated(info, "v8::FunctionTemplate::SetCallHandler");
924 i::Isolate* isolate = info->GetIsolate();
914 ENTER_V8(isolate); 925 ENTER_V8(isolate);
915 i::HandleScope scope(isolate); 926 i::HandleScope scope(isolate);
916 i::Handle<i::Struct> struct_obj = 927 i::Handle<i::Struct> struct_obj =
917 isolate->factory()->NewStruct(i::CALL_HANDLER_INFO_TYPE); 928 isolate->factory()->NewStruct(i::CALL_HANDLER_INFO_TYPE);
918 i::Handle<i::CallHandlerInfo> obj = 929 i::Handle<i::CallHandlerInfo> obj =
919 i::Handle<i::CallHandlerInfo>::cast(struct_obj); 930 i::Handle<i::CallHandlerInfo>::cast(struct_obj);
920 SET_FIELD_WRAPPED(obj, set_callback, callback); 931 SET_FIELD_WRAPPED(obj, set_callback, callback);
921 if (data.IsEmpty()) { 932 if (data.IsEmpty()) {
922 data = v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate)); 933 data = v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate));
923 } 934 }
924 obj->set_data(*Utils::OpenHandle(*data)); 935 obj->set_data(*Utils::OpenHandle(*data));
925 Utils::OpenHandle(this)->set_call_code(*obj); 936 info->set_call_code(*obj);
926 } 937 }
927 938
928 939
929 static i::Handle<i::AccessorInfo> SetAccessorInfoProperties( 940 static i::Handle<i::AccessorInfo> SetAccessorInfoProperties(
930 i::Handle<i::AccessorInfo> obj, 941 i::Handle<i::AccessorInfo> obj,
931 v8::Handle<Name> name, 942 v8::Handle<Name> name,
932 v8::AccessControl settings, 943 v8::AccessControl settings,
933 v8::PropertyAttribute attributes, 944 v8::PropertyAttribute attributes,
934 v8::Handle<AccessorSignature> signature) { 945 v8::Handle<AccessorSignature> signature) {
935 obj->set_name(*Utils::OpenHandle(*name)); 946 obj->set_name(*Utils::OpenHandle(*name));
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 ObjectTemplate::New(isolate, ToApiHandle<FunctionTemplate>(handle)); 990 ObjectTemplate::New(isolate, ToApiHandle<FunctionTemplate>(handle));
980 handle->set_instance_template(*Utils::OpenHandle(*templ)); 991 handle->set_instance_template(*Utils::OpenHandle(*templ));
981 } 992 }
982 i::Handle<i::ObjectTemplateInfo> result( 993 i::Handle<i::ObjectTemplateInfo> result(
983 i::ObjectTemplateInfo::cast(handle->instance_template())); 994 i::ObjectTemplateInfo::cast(handle->instance_template()));
984 return Utils::ToLocal(result); 995 return Utils::ToLocal(result);
985 } 996 }
986 997
987 998
988 void FunctionTemplate::SetLength(int length) { 999 void FunctionTemplate::SetLength(int length) {
989 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 1000 auto info = Utils::OpenHandle(this);
1001 EnsureNotInstantiated(info, "v8::FunctionTemplate::SetLength");
1002 auto isolate = info->GetIsolate();
990 ENTER_V8(isolate); 1003 ENTER_V8(isolate);
991 Utils::OpenHandle(this)->set_length(length); 1004 info->set_length(length);
992 } 1005 }
993 1006
994 1007
995 void FunctionTemplate::SetClassName(Handle<String> name) { 1008 void FunctionTemplate::SetClassName(Handle<String> name) {
996 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 1009 auto info = Utils::OpenHandle(this);
1010 EnsureNotInstantiated(info, "v8::FunctionTemplate::SetClassName");
1011 auto isolate = info->GetIsolate();
997 ENTER_V8(isolate); 1012 ENTER_V8(isolate);
998 Utils::OpenHandle(this)->set_class_name(*Utils::OpenHandle(*name)); 1013 info->set_class_name(*Utils::OpenHandle(*name));
999 } 1014 }
1000 1015
1001 1016
1002 void FunctionTemplate::SetHiddenPrototype(bool value) { 1017 void FunctionTemplate::SetHiddenPrototype(bool value) {
1003 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 1018 auto info = Utils::OpenHandle(this);
1019 EnsureNotInstantiated(info, "v8::FunctionTemplate::SetHiddenPrototype");
1020 auto isolate = info->GetIsolate();
1004 ENTER_V8(isolate); 1021 ENTER_V8(isolate);
1005 Utils::OpenHandle(this)->set_hidden_prototype(value); 1022 info->set_hidden_prototype(value);
1006 } 1023 }
1007 1024
1008 1025
1009 void FunctionTemplate::ReadOnlyPrototype() { 1026 void FunctionTemplate::ReadOnlyPrototype() {
1010 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 1027 auto info = Utils::OpenHandle(this);
1028 EnsureNotInstantiated(info, "v8::FunctionTemplate::ReadOnlyPrototype");
1029 auto isolate = info->GetIsolate();
1011 ENTER_V8(isolate); 1030 ENTER_V8(isolate);
1012 Utils::OpenHandle(this)->set_read_only_prototype(true); 1031 info->set_read_only_prototype(true);
1013 } 1032 }
1014 1033
1015 1034
1016 void FunctionTemplate::RemovePrototype() { 1035 void FunctionTemplate::RemovePrototype() {
1017 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 1036 auto info = Utils::OpenHandle(this);
1037 EnsureNotInstantiated(info, "v8::FunctionTemplate::RemovePrototype");
1038 auto isolate = info->GetIsolate();
1018 ENTER_V8(isolate); 1039 ENTER_V8(isolate);
1019 Utils::OpenHandle(this)->set_remove_prototype(true); 1040 info->set_remove_prototype(true);
1020 } 1041 }
1021 1042
1022 1043
1023 // --- O b j e c t T e m p l a t e --- 1044 // --- O b j e c t T e m p l a t e ---
1024 1045
1025 1046
1026 Local<ObjectTemplate> ObjectTemplate::New(Isolate* isolate) { 1047 Local<ObjectTemplate> ObjectTemplate::New(Isolate* isolate) {
1027 return New(reinterpret_cast<i::Isolate*>(isolate), Local<FunctionTemplate>()); 1048 return New(reinterpret_cast<i::Isolate*>(isolate), Local<FunctionTemplate>());
1028 } 1049 }
1029 1050
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
1176 typename Enumerator> 1197 typename Enumerator>
1177 static void ObjectTemplateSetNamedPropertyHandler(ObjectTemplate* templ, 1198 static void ObjectTemplateSetNamedPropertyHandler(ObjectTemplate* templ,
1178 Getter getter, Setter setter, 1199 Getter getter, Setter setter,
1179 Query query, Deleter remover, 1200 Query query, Deleter remover,
1180 Enumerator enumerator, 1201 Enumerator enumerator,
1181 Handle<Value> data, 1202 Handle<Value> data,
1182 bool can_intercept_symbols) { 1203 bool can_intercept_symbols) {
1183 i::Isolate* isolate = Utils::OpenHandle(templ)->GetIsolate(); 1204 i::Isolate* isolate = Utils::OpenHandle(templ)->GetIsolate();
1184 ENTER_V8(isolate); 1205 ENTER_V8(isolate);
1185 i::HandleScope scope(isolate); 1206 i::HandleScope scope(isolate);
1186 EnsureConstructor(isolate, templ); 1207 auto cons = EnsureConstructor(isolate, templ);
1187 i::FunctionTemplateInfo* constructor = 1208 EnsureNotInstantiated(cons, "ObjectTemplateSetNamedPropertyHandler");
1188 i::FunctionTemplateInfo::cast(Utils::OpenHandle(templ)->constructor());
1189 i::Handle<i::FunctionTemplateInfo> cons(constructor);
1190 i::Handle<i::Struct> struct_obj = 1209 i::Handle<i::Struct> struct_obj =
1191 isolate->factory()->NewStruct(i::INTERCEPTOR_INFO_TYPE); 1210 isolate->factory()->NewStruct(i::INTERCEPTOR_INFO_TYPE);
1192 i::Handle<i::InterceptorInfo> obj = 1211 i::Handle<i::InterceptorInfo> obj =
1193 i::Handle<i::InterceptorInfo>::cast(struct_obj); 1212 i::Handle<i::InterceptorInfo>::cast(struct_obj);
1194 1213
1195 if (getter != 0) SET_FIELD_WRAPPED(obj, set_getter, getter); 1214 if (getter != 0) SET_FIELD_WRAPPED(obj, set_getter, getter);
1196 if (setter != 0) SET_FIELD_WRAPPED(obj, set_setter, setter); 1215 if (setter != 0) SET_FIELD_WRAPPED(obj, set_setter, setter);
1197 if (query != 0) SET_FIELD_WRAPPED(obj, set_query, query); 1216 if (query != 0) SET_FIELD_WRAPPED(obj, set_query, query);
1198 if (remover != 0) SET_FIELD_WRAPPED(obj, set_deleter, remover); 1217 if (remover != 0) SET_FIELD_WRAPPED(obj, set_deleter, remover);
1199 if (enumerator != 0) SET_FIELD_WRAPPED(obj, set_enumerator, enumerator); 1218 if (enumerator != 0) SET_FIELD_WRAPPED(obj, set_enumerator, enumerator);
(...skipping 22 matching lines...) Expand all
1222 ObjectTemplateSetNamedPropertyHandler(this, config.getter, config.setter, 1241 ObjectTemplateSetNamedPropertyHandler(this, config.getter, config.setter,
1223 config.query, config.deleter, 1242 config.query, config.deleter,
1224 config.enumerator, config.data, true); 1243 config.enumerator, config.data, true);
1225 } 1244 }
1226 1245
1227 1246
1228 void ObjectTemplate::MarkAsUndetectable() { 1247 void ObjectTemplate::MarkAsUndetectable() {
1229 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 1248 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
1230 ENTER_V8(isolate); 1249 ENTER_V8(isolate);
1231 i::HandleScope scope(isolate); 1250 i::HandleScope scope(isolate);
1232 EnsureConstructor(isolate, this); 1251 auto cons = EnsureConstructor(isolate, this);
1233 i::FunctionTemplateInfo* constructor = 1252 EnsureNotInstantiated(cons, "v8::ObjectTemplate::MarkAsUndetectable");
1234 i::FunctionTemplateInfo::cast(Utils::OpenHandle(this)->constructor());
1235 i::Handle<i::FunctionTemplateInfo> cons(constructor);
1236 cons->set_undetectable(true); 1253 cons->set_undetectable(true);
1237 } 1254 }
1238 1255
1239 1256
1240 void ObjectTemplate::SetAccessCheckCallbacks( 1257 void ObjectTemplate::SetAccessCheckCallbacks(
1241 NamedSecurityCallback named_callback, 1258 NamedSecurityCallback named_callback,
1242 IndexedSecurityCallback indexed_callback, 1259 IndexedSecurityCallback indexed_callback,
1243 Handle<Value> data, 1260 Handle<Value> data,
1244 bool turned_on_by_default) { 1261 bool turned_on_by_default) {
1245 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 1262 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
1246 ENTER_V8(isolate); 1263 ENTER_V8(isolate);
1247 i::HandleScope scope(isolate); 1264 i::HandleScope scope(isolate);
1248 EnsureConstructor(isolate, this); 1265 auto cons = EnsureConstructor(isolate, this);
1266 EnsureNotInstantiated(cons, "v8::ObjectTemplate::SetAccessCheckCallbacks");
1249 1267
1250 i::Handle<i::Struct> struct_info = 1268 i::Handle<i::Struct> struct_info =
1251 isolate->factory()->NewStruct(i::ACCESS_CHECK_INFO_TYPE); 1269 isolate->factory()->NewStruct(i::ACCESS_CHECK_INFO_TYPE);
1252 i::Handle<i::AccessCheckInfo> info = 1270 i::Handle<i::AccessCheckInfo> info =
1253 i::Handle<i::AccessCheckInfo>::cast(struct_info); 1271 i::Handle<i::AccessCheckInfo>::cast(struct_info);
1254 1272
1255 SET_FIELD_WRAPPED(info, set_named_callback, named_callback); 1273 SET_FIELD_WRAPPED(info, set_named_callback, named_callback);
1256 SET_FIELD_WRAPPED(info, set_indexed_callback, indexed_callback); 1274 SET_FIELD_WRAPPED(info, set_indexed_callback, indexed_callback);
1257 1275
1258 if (data.IsEmpty()) { 1276 if (data.IsEmpty()) {
1259 data = v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate)); 1277 data = v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate));
1260 } 1278 }
1261 info->set_data(*Utils::OpenHandle(*data)); 1279 info->set_data(*Utils::OpenHandle(*data));
1262 1280
1263 i::FunctionTemplateInfo* constructor =
1264 i::FunctionTemplateInfo::cast(Utils::OpenHandle(this)->constructor());
1265 i::Handle<i::FunctionTemplateInfo> cons(constructor);
1266 cons->set_access_check_info(*info); 1281 cons->set_access_check_info(*info);
1267 cons->set_needs_access_check(turned_on_by_default); 1282 cons->set_needs_access_check(turned_on_by_default);
1268 } 1283 }
1269 1284
1270 1285
1271 void ObjectTemplate::SetHandler( 1286 void ObjectTemplate::SetHandler(
1272 const IndexedPropertyHandlerConfiguration& config) { 1287 const IndexedPropertyHandlerConfiguration& config) {
1273 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 1288 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
1274 ENTER_V8(isolate); 1289 ENTER_V8(isolate);
1275 i::HandleScope scope(isolate); 1290 i::HandleScope scope(isolate);
1276 EnsureConstructor(isolate, this); 1291 auto cons = EnsureConstructor(isolate, this);
1277 i::FunctionTemplateInfo* constructor = i::FunctionTemplateInfo::cast( 1292 EnsureNotInstantiated(cons, "v8::ObjectTemplate::SetHandler");
1278 Utils::OpenHandle(this)->constructor());
1279 i::Handle<i::FunctionTemplateInfo> cons(constructor);
1280 i::Handle<i::Struct> struct_obj = 1293 i::Handle<i::Struct> struct_obj =
1281 isolate->factory()->NewStruct(i::INTERCEPTOR_INFO_TYPE); 1294 isolate->factory()->NewStruct(i::INTERCEPTOR_INFO_TYPE);
1282 i::Handle<i::InterceptorInfo> obj = 1295 i::Handle<i::InterceptorInfo> obj =
1283 i::Handle<i::InterceptorInfo>::cast(struct_obj); 1296 i::Handle<i::InterceptorInfo>::cast(struct_obj);
1284 1297
1285 if (config.getter != 0) SET_FIELD_WRAPPED(obj, set_getter, config.getter); 1298 if (config.getter != 0) SET_FIELD_WRAPPED(obj, set_getter, config.getter);
1286 if (config.setter != 0) SET_FIELD_WRAPPED(obj, set_setter, config.setter); 1299 if (config.setter != 0) SET_FIELD_WRAPPED(obj, set_setter, config.setter);
1287 if (config.query != 0) SET_FIELD_WRAPPED(obj, set_query, config.query); 1300 if (config.query != 0) SET_FIELD_WRAPPED(obj, set_query, config.query);
1288 if (config.deleter != 0) SET_FIELD_WRAPPED(obj, set_deleter, config.deleter); 1301 if (config.deleter != 0) SET_FIELD_WRAPPED(obj, set_deleter, config.deleter);
1289 if (config.enumerator != 0) { 1302 if (config.enumerator != 0) {
1290 SET_FIELD_WRAPPED(obj, set_enumerator, config.enumerator); 1303 SET_FIELD_WRAPPED(obj, set_enumerator, config.enumerator);
1291 } 1304 }
1292 obj->set_flags(0); 1305 obj->set_flags(0);
1293 1306
1294 v8::Local<v8::Value> data = config.data; 1307 v8::Local<v8::Value> data = config.data;
1295 if (data.IsEmpty()) { 1308 if (data.IsEmpty()) {
1296 data = v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate)); 1309 data = v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate));
1297 } 1310 }
1298 obj->set_data(*Utils::OpenHandle(*data)); 1311 obj->set_data(*Utils::OpenHandle(*data));
1299 cons->set_indexed_property_handler(*obj); 1312 cons->set_indexed_property_handler(*obj);
1300 } 1313 }
1301 1314
1302 1315
1303 void ObjectTemplate::SetCallAsFunctionHandler(FunctionCallback callback, 1316 void ObjectTemplate::SetCallAsFunctionHandler(FunctionCallback callback,
1304 Handle<Value> data) { 1317 Handle<Value> data) {
1305 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 1318 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
1306 ENTER_V8(isolate); 1319 ENTER_V8(isolate);
1307 i::HandleScope scope(isolate); 1320 i::HandleScope scope(isolate);
1308 EnsureConstructor(isolate, this); 1321 auto cons = EnsureConstructor(isolate, this);
1309 i::FunctionTemplateInfo* constructor = i::FunctionTemplateInfo::cast( 1322 EnsureNotInstantiated(cons, "v8::ObjectTemplate::SetCallAsFunctionHandler");
1310 Utils::OpenHandle(this)->constructor());
1311 i::Handle<i::FunctionTemplateInfo> cons(constructor);
1312 i::Handle<i::Struct> struct_obj = 1323 i::Handle<i::Struct> struct_obj =
1313 isolate->factory()->NewStruct(i::CALL_HANDLER_INFO_TYPE); 1324 isolate->factory()->NewStruct(i::CALL_HANDLER_INFO_TYPE);
1314 i::Handle<i::CallHandlerInfo> obj = 1325 i::Handle<i::CallHandlerInfo> obj =
1315 i::Handle<i::CallHandlerInfo>::cast(struct_obj); 1326 i::Handle<i::CallHandlerInfo>::cast(struct_obj);
1316 SET_FIELD_WRAPPED(obj, set_callback, callback); 1327 SET_FIELD_WRAPPED(obj, set_callback, callback);
1317 if (data.IsEmpty()) { 1328 if (data.IsEmpty()) {
1318 data = v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate)); 1329 data = v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate));
1319 } 1330 }
1320 obj->set_data(*Utils::OpenHandle(*data)); 1331 obj->set_data(*Utils::OpenHandle(*data));
1321 cons->set_instance_call_handler(*obj); 1332 cons->set_instance_call_handler(*obj);
(...skipping 6273 matching lines...) Expand 10 before | Expand all | Expand 10 after
7595 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); 7606 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate());
7596 Address callback_address = 7607 Address callback_address =
7597 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); 7608 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback));
7598 VMState<EXTERNAL> state(isolate); 7609 VMState<EXTERNAL> state(isolate);
7599 ExternalCallbackScope call_scope(isolate, callback_address); 7610 ExternalCallbackScope call_scope(isolate, callback_address);
7600 callback(info); 7611 callback(info);
7601 } 7612 }
7602 7613
7603 7614
7604 } } // namespace v8::internal 7615 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « include/v8.h ('k') | src/factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698