OLD | NEW |
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 1629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1640 if (obj.is_null()) return Local<Value>(); | 1640 if (obj.is_null()) return Local<Value>(); |
1641 i::Isolate* isolate = i::Handle<i::HeapObject>::cast(obj)->GetIsolate(); | 1641 i::Isolate* isolate = i::Handle<i::HeapObject>::cast(obj)->GetIsolate(); |
1642 ON_BAILOUT(isolate, "v8::Script::Run()", return Local<Value>()); | 1642 ON_BAILOUT(isolate, "v8::Script::Run()", return Local<Value>()); |
1643 LOG_API(isolate, "Script::Run"); | 1643 LOG_API(isolate, "Script::Run"); |
1644 ENTER_V8(isolate); | 1644 ENTER_V8(isolate); |
1645 i::Logger::TimerEventScope timer_scope( | 1645 i::Logger::TimerEventScope timer_scope( |
1646 isolate, i::Logger::TimerEventScope::v8_execute); | 1646 isolate, i::Logger::TimerEventScope::v8_execute); |
1647 i::HandleScope scope(isolate); | 1647 i::HandleScope scope(isolate); |
1648 i::Handle<i::JSFunction> fun = i::Handle<i::JSFunction>::cast(obj); | 1648 i::Handle<i::JSFunction> fun = i::Handle<i::JSFunction>::cast(obj); |
1649 EXCEPTION_PREAMBLE(isolate); | 1649 EXCEPTION_PREAMBLE(isolate); |
1650 i::Handle<i::Object> receiver( | 1650 i::Handle<i::Object> receiver(isolate->global_proxy(), isolate); |
1651 isolate->context()->global_proxy(), isolate); | |
1652 i::Handle<i::Object> result; | 1651 i::Handle<i::Object> result; |
1653 has_pending_exception = !i::Execution::Call( | 1652 has_pending_exception = !i::Execution::Call( |
1654 isolate, fun, receiver, 0, NULL).ToHandle(&result); | 1653 isolate, fun, receiver, 0, NULL).ToHandle(&result); |
1655 EXCEPTION_BAILOUT_CHECK_DO_CALLBACK(isolate, Local<Value>()); | 1654 EXCEPTION_BAILOUT_CHECK_DO_CALLBACK(isolate, Local<Value>()); |
1656 return Utils::ToLocal(scope.CloseAndEscape(result)); | 1655 return Utils::ToLocal(scope.CloseAndEscape(result)); |
1657 } | 1656 } |
1658 | 1657 |
1659 | 1658 |
1660 Local<UnboundScript> Script::GetUnboundScript() { | 1659 Local<UnboundScript> Script::GetUnboundScript() { |
1661 i::Handle<i::Object> obj = Utils::OpenHandle(this); | 1660 i::Handle<i::Object> obj = Utils::OpenHandle(this); |
(...skipping 3436 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5098 | 5097 |
5099 const char* v8::V8::GetVersion() { | 5098 const char* v8::V8::GetVersion() { |
5100 return i::Version::GetVersion(); | 5099 return i::Version::GetVersion(); |
5101 } | 5100 } |
5102 | 5101 |
5103 | 5102 |
5104 static i::Handle<i::Context> CreateEnvironment( | 5103 static i::Handle<i::Context> CreateEnvironment( |
5105 i::Isolate* isolate, | 5104 i::Isolate* isolate, |
5106 v8::ExtensionConfiguration* extensions, | 5105 v8::ExtensionConfiguration* extensions, |
5107 v8::Handle<ObjectTemplate> global_template, | 5106 v8::Handle<ObjectTemplate> global_template, |
5108 v8::Handle<Value> global_object) { | 5107 v8::Handle<Value> maybe_global_proxy) { |
5109 i::Handle<i::Context> env; | 5108 i::Handle<i::Context> env; |
5110 | 5109 |
5111 // Enter V8 via an ENTER_V8 scope. | 5110 // Enter V8 via an ENTER_V8 scope. |
5112 { | 5111 { |
5113 ENTER_V8(isolate); | 5112 ENTER_V8(isolate); |
5114 v8::Handle<ObjectTemplate> proxy_template = global_template; | 5113 v8::Handle<ObjectTemplate> proxy_template = global_template; |
5115 i::Handle<i::FunctionTemplateInfo> proxy_constructor; | 5114 i::Handle<i::FunctionTemplateInfo> proxy_constructor; |
5116 i::Handle<i::FunctionTemplateInfo> global_constructor; | 5115 i::Handle<i::FunctionTemplateInfo> global_constructor; |
5117 | 5116 |
5118 if (!global_template.IsEmpty()) { | 5117 if (!global_template.IsEmpty()) { |
(...skipping 17 matching lines...) Expand all Loading... |
5136 proxy_constructor->set_access_check_info( | 5135 proxy_constructor->set_access_check_info( |
5137 global_constructor->access_check_info()); | 5136 global_constructor->access_check_info()); |
5138 proxy_constructor->set_needs_access_check( | 5137 proxy_constructor->set_needs_access_check( |
5139 global_constructor->needs_access_check()); | 5138 global_constructor->needs_access_check()); |
5140 global_constructor->set_needs_access_check(false); | 5139 global_constructor->set_needs_access_check(false); |
5141 global_constructor->set_access_check_info( | 5140 global_constructor->set_access_check_info( |
5142 isolate->heap()->undefined_value()); | 5141 isolate->heap()->undefined_value()); |
5143 } | 5142 } |
5144 } | 5143 } |
5145 | 5144 |
| 5145 i::Handle<i::Object> proxy = Utils::OpenHandle(*maybe_global_proxy, true); |
| 5146 i::MaybeHandle<i::JSGlobalProxy> maybe_proxy; |
| 5147 if (!proxy.is_null()) { |
| 5148 maybe_proxy = i::Handle<i::JSGlobalProxy>::cast(proxy); |
| 5149 } |
5146 // Create the environment. | 5150 // Create the environment. |
5147 env = isolate->bootstrapper()->CreateEnvironment( | 5151 env = isolate->bootstrapper()->CreateEnvironment( |
5148 Utils::OpenHandle(*global_object, true), | 5152 maybe_proxy, proxy_template, extensions); |
5149 proxy_template, | |
5150 extensions); | |
5151 | 5153 |
5152 // Restore the access check info on the global template. | 5154 // Restore the access check info on the global template. |
5153 if (!global_template.IsEmpty()) { | 5155 if (!global_template.IsEmpty()) { |
5154 ASSERT(!global_constructor.is_null()); | 5156 ASSERT(!global_constructor.is_null()); |
5155 ASSERT(!proxy_constructor.is_null()); | 5157 ASSERT(!proxy_constructor.is_null()); |
5156 global_constructor->set_access_check_info( | 5158 global_constructor->set_access_check_info( |
5157 proxy_constructor->access_check_info()); | 5159 proxy_constructor->access_check_info()); |
5158 global_constructor->set_needs_access_check( | 5160 global_constructor->set_needs_access_check( |
5159 proxy_constructor->needs_access_check()); | 5161 proxy_constructor->needs_access_check()); |
5160 } | 5162 } |
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5819 if (!val->IsJSObject()) return false; | 5821 if (!val->IsJSObject()) return false; |
5820 i::Handle<i::JSObject> obj = i::Handle<i::JSObject>::cast(val); | 5822 i::Handle<i::JSObject> obj = i::Handle<i::JSObject>::cast(val); |
5821 i::Isolate* isolate = obj->GetIsolate(); | 5823 i::Isolate* isolate = obj->GetIsolate(); |
5822 LOG_API(isolate, "IsPromise"); | 5824 LOG_API(isolate, "IsPromise"); |
5823 ENTER_V8(isolate); | 5825 ENTER_V8(isolate); |
5824 EXCEPTION_PREAMBLE(isolate); | 5826 EXCEPTION_PREAMBLE(isolate); |
5825 i::Handle<i::Object> argv[] = { obj }; | 5827 i::Handle<i::Object> argv[] = { obj }; |
5826 i::Handle<i::Object> b; | 5828 i::Handle<i::Object> b; |
5827 has_pending_exception = !i::Execution::Call( | 5829 has_pending_exception = !i::Execution::Call( |
5828 isolate, | 5830 isolate, |
5829 handle( | 5831 isolate->is_promise(), |
5830 isolate->context()->global_object()->native_context()->is_promise()), | |
5831 isolate->factory()->undefined_value(), | 5832 isolate->factory()->undefined_value(), |
5832 ARRAY_SIZE(argv), argv, | 5833 ARRAY_SIZE(argv), argv, |
5833 false).ToHandle(&b); | 5834 false).ToHandle(&b); |
5834 EXCEPTION_BAILOUT_CHECK(isolate, false); | 5835 EXCEPTION_BAILOUT_CHECK(isolate, false); |
5835 return b->BooleanValue(); | 5836 return b->BooleanValue(); |
5836 } | 5837 } |
5837 | 5838 |
5838 | 5839 |
5839 Local<Promise::Resolver> Promise::Resolver::New(Isolate* v8_isolate) { | 5840 Local<Promise::Resolver> Promise::Resolver::New(Isolate* v8_isolate) { |
5840 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); | 5841 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); |
5841 LOG_API(isolate, "Promise::Resolver::New"); | 5842 LOG_API(isolate, "Promise::Resolver::New"); |
5842 ENTER_V8(isolate); | 5843 ENTER_V8(isolate); |
5843 EXCEPTION_PREAMBLE(isolate); | 5844 EXCEPTION_PREAMBLE(isolate); |
5844 i::Handle<i::Object> result; | 5845 i::Handle<i::Object> result; |
5845 has_pending_exception = !i::Execution::Call( | 5846 has_pending_exception = !i::Execution::Call( |
5846 isolate, | 5847 isolate, |
5847 handle(isolate->context()->global_object()->native_context()-> | 5848 isolate->promise_create(), |
5848 promise_create()), | |
5849 isolate->factory()->undefined_value(), | 5849 isolate->factory()->undefined_value(), |
5850 0, NULL, | 5850 0, NULL, |
5851 false).ToHandle(&result); | 5851 false).ToHandle(&result); |
5852 EXCEPTION_BAILOUT_CHECK(isolate, Local<Promise::Resolver>()); | 5852 EXCEPTION_BAILOUT_CHECK(isolate, Local<Promise::Resolver>()); |
5853 return Local<Promise::Resolver>::Cast(Utils::ToLocal(result)); | 5853 return Local<Promise::Resolver>::Cast(Utils::ToLocal(result)); |
5854 } | 5854 } |
5855 | 5855 |
5856 | 5856 |
5857 Local<Promise> Promise::Resolver::GetPromise() { | 5857 Local<Promise> Promise::Resolver::GetPromise() { |
5858 i::Handle<i::JSObject> promise = Utils::OpenHandle(this); | 5858 i::Handle<i::JSObject> promise = Utils::OpenHandle(this); |
5859 return Local<Promise>::Cast(Utils::ToLocal(promise)); | 5859 return Local<Promise>::Cast(Utils::ToLocal(promise)); |
5860 } | 5860 } |
5861 | 5861 |
5862 | 5862 |
5863 void Promise::Resolver::Resolve(Handle<Value> value) { | 5863 void Promise::Resolver::Resolve(Handle<Value> value) { |
5864 i::Handle<i::JSObject> promise = Utils::OpenHandle(this); | 5864 i::Handle<i::JSObject> promise = Utils::OpenHandle(this); |
5865 i::Isolate* isolate = promise->GetIsolate(); | 5865 i::Isolate* isolate = promise->GetIsolate(); |
5866 LOG_API(isolate, "Promise::Resolver::Resolve"); | 5866 LOG_API(isolate, "Promise::Resolver::Resolve"); |
5867 ENTER_V8(isolate); | 5867 ENTER_V8(isolate); |
5868 EXCEPTION_PREAMBLE(isolate); | 5868 EXCEPTION_PREAMBLE(isolate); |
5869 i::Handle<i::Object> argv[] = { promise, Utils::OpenHandle(*value) }; | 5869 i::Handle<i::Object> argv[] = { promise, Utils::OpenHandle(*value) }; |
5870 has_pending_exception = i::Execution::Call( | 5870 has_pending_exception = i::Execution::Call( |
5871 isolate, | 5871 isolate, |
5872 handle(isolate->context()->global_object()->native_context()-> | 5872 isolate->promise_resolve(), |
5873 promise_resolve()), | |
5874 isolate->factory()->undefined_value(), | 5873 isolate->factory()->undefined_value(), |
5875 ARRAY_SIZE(argv), argv, | 5874 ARRAY_SIZE(argv), argv, |
5876 false).is_null(); | 5875 false).is_null(); |
5877 EXCEPTION_BAILOUT_CHECK(isolate, /* void */ ;); | 5876 EXCEPTION_BAILOUT_CHECK(isolate, /* void */ ;); |
5878 } | 5877 } |
5879 | 5878 |
5880 | 5879 |
5881 void Promise::Resolver::Reject(Handle<Value> value) { | 5880 void Promise::Resolver::Reject(Handle<Value> value) { |
5882 i::Handle<i::JSObject> promise = Utils::OpenHandle(this); | 5881 i::Handle<i::JSObject> promise = Utils::OpenHandle(this); |
5883 i::Isolate* isolate = promise->GetIsolate(); | 5882 i::Isolate* isolate = promise->GetIsolate(); |
5884 LOG_API(isolate, "Promise::Resolver::Reject"); | 5883 LOG_API(isolate, "Promise::Resolver::Reject"); |
5885 ENTER_V8(isolate); | 5884 ENTER_V8(isolate); |
5886 EXCEPTION_PREAMBLE(isolate); | 5885 EXCEPTION_PREAMBLE(isolate); |
5887 i::Handle<i::Object> argv[] = { promise, Utils::OpenHandle(*value) }; | 5886 i::Handle<i::Object> argv[] = { promise, Utils::OpenHandle(*value) }; |
5888 has_pending_exception = i::Execution::Call( | 5887 has_pending_exception = i::Execution::Call( |
5889 isolate, | 5888 isolate, |
5890 handle(isolate->context()->global_object()->native_context()-> | 5889 isolate->promise_reject(), |
5891 promise_reject()), | |
5892 isolate->factory()->undefined_value(), | 5890 isolate->factory()->undefined_value(), |
5893 ARRAY_SIZE(argv), argv, | 5891 ARRAY_SIZE(argv), argv, |
5894 false).is_null(); | 5892 false).is_null(); |
5895 EXCEPTION_BAILOUT_CHECK(isolate, /* void */ ;); | 5893 EXCEPTION_BAILOUT_CHECK(isolate, /* void */ ;); |
5896 } | 5894 } |
5897 | 5895 |
5898 | 5896 |
5899 Local<Promise> Promise::Chain(Handle<Function> handler) { | 5897 Local<Promise> Promise::Chain(Handle<Function> handler) { |
5900 i::Handle<i::JSObject> promise = Utils::OpenHandle(this); | 5898 i::Handle<i::JSObject> promise = Utils::OpenHandle(this); |
5901 i::Isolate* isolate = promise->GetIsolate(); | 5899 i::Isolate* isolate = promise->GetIsolate(); |
5902 LOG_API(isolate, "Promise::Chain"); | 5900 LOG_API(isolate, "Promise::Chain"); |
5903 ENTER_V8(isolate); | 5901 ENTER_V8(isolate); |
5904 EXCEPTION_PREAMBLE(isolate); | 5902 EXCEPTION_PREAMBLE(isolate); |
5905 i::Handle<i::Object> argv[] = { Utils::OpenHandle(*handler) }; | 5903 i::Handle<i::Object> argv[] = { Utils::OpenHandle(*handler) }; |
5906 i::Handle<i::Object> result; | 5904 i::Handle<i::Object> result; |
5907 has_pending_exception = !i::Execution::Call( | 5905 has_pending_exception = !i::Execution::Call( |
5908 isolate, | 5906 isolate, |
5909 handle(isolate->context()->global_object()->native_context()-> | 5907 isolate->promise_chain(), |
5910 promise_chain()), | |
5911 promise, | 5908 promise, |
5912 ARRAY_SIZE(argv), argv, | 5909 ARRAY_SIZE(argv), argv, |
5913 false).ToHandle(&result); | 5910 false).ToHandle(&result); |
5914 EXCEPTION_BAILOUT_CHECK(isolate, Local<Promise>()); | 5911 EXCEPTION_BAILOUT_CHECK(isolate, Local<Promise>()); |
5915 return Local<Promise>::Cast(Utils::ToLocal(result)); | 5912 return Local<Promise>::Cast(Utils::ToLocal(result)); |
5916 } | 5913 } |
5917 | 5914 |
5918 | 5915 |
5919 Local<Promise> Promise::Catch(Handle<Function> handler) { | 5916 Local<Promise> Promise::Catch(Handle<Function> handler) { |
5920 i::Handle<i::JSObject> promise = Utils::OpenHandle(this); | 5917 i::Handle<i::JSObject> promise = Utils::OpenHandle(this); |
5921 i::Isolate* isolate = promise->GetIsolate(); | 5918 i::Isolate* isolate = promise->GetIsolate(); |
5922 LOG_API(isolate, "Promise::Catch"); | 5919 LOG_API(isolate, "Promise::Catch"); |
5923 ENTER_V8(isolate); | 5920 ENTER_V8(isolate); |
5924 EXCEPTION_PREAMBLE(isolate); | 5921 EXCEPTION_PREAMBLE(isolate); |
5925 i::Handle<i::Object> argv[] = { Utils::OpenHandle(*handler) }; | 5922 i::Handle<i::Object> argv[] = { Utils::OpenHandle(*handler) }; |
5926 i::Handle<i::Object> result; | 5923 i::Handle<i::Object> result; |
5927 has_pending_exception = !i::Execution::Call( | 5924 has_pending_exception = !i::Execution::Call( |
5928 isolate, | 5925 isolate, |
5929 handle(isolate->context()->global_object()->native_context()-> | 5926 isolate->promise_catch(), |
5930 promise_catch()), | |
5931 promise, | 5927 promise, |
5932 ARRAY_SIZE(argv), argv, | 5928 ARRAY_SIZE(argv), argv, |
5933 false).ToHandle(&result); | 5929 false).ToHandle(&result); |
5934 EXCEPTION_BAILOUT_CHECK(isolate, Local<Promise>()); | 5930 EXCEPTION_BAILOUT_CHECK(isolate, Local<Promise>()); |
5935 return Local<Promise>::Cast(Utils::ToLocal(result)); | 5931 return Local<Promise>::Cast(Utils::ToLocal(result)); |
5936 } | 5932 } |
5937 | 5933 |
5938 | 5934 |
5939 Local<Promise> Promise::Then(Handle<Function> handler) { | 5935 Local<Promise> Promise::Then(Handle<Function> handler) { |
5940 i::Handle<i::JSObject> promise = Utils::OpenHandle(this); | 5936 i::Handle<i::JSObject> promise = Utils::OpenHandle(this); |
5941 i::Isolate* isolate = promise->GetIsolate(); | 5937 i::Isolate* isolate = promise->GetIsolate(); |
5942 LOG_API(isolate, "Promise::Then"); | 5938 LOG_API(isolate, "Promise::Then"); |
5943 ENTER_V8(isolate); | 5939 ENTER_V8(isolate); |
5944 EXCEPTION_PREAMBLE(isolate); | 5940 EXCEPTION_PREAMBLE(isolate); |
5945 i::Handle<i::Object> argv[] = { Utils::OpenHandle(*handler) }; | 5941 i::Handle<i::Object> argv[] = { Utils::OpenHandle(*handler) }; |
5946 i::Handle<i::Object> result; | 5942 i::Handle<i::Object> result; |
5947 has_pending_exception = !i::Execution::Call( | 5943 has_pending_exception = !i::Execution::Call( |
5948 isolate, | 5944 isolate, |
5949 handle(isolate->context()->global_object()->native_context()-> | 5945 isolate->promise_then(), |
5950 promise_then()), | |
5951 promise, | 5946 promise, |
5952 ARRAY_SIZE(argv), argv, | 5947 ARRAY_SIZE(argv), argv, |
5953 false).ToHandle(&result); | 5948 false).ToHandle(&result); |
5954 EXCEPTION_BAILOUT_CHECK(isolate, Local<Promise>()); | 5949 EXCEPTION_BAILOUT_CHECK(isolate, Local<Promise>()); |
5955 return Local<Promise>::Cast(Utils::ToLocal(result)); | 5950 return Local<Promise>::Cast(Utils::ToLocal(result)); |
5956 } | 5951 } |
5957 | 5952 |
5958 | 5953 |
5959 bool v8::ArrayBuffer::IsExternal() const { | 5954 bool v8::ArrayBuffer::IsExternal() const { |
5960 return Utils::OpenHandle(this)->is_external(); | 5955 return Utils::OpenHandle(this)->is_external(); |
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6375 bool Isolate::InContext() { | 6370 bool Isolate::InContext() { |
6376 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); | 6371 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); |
6377 return isolate->context() != NULL; | 6372 return isolate->context() != NULL; |
6378 } | 6373 } |
6379 | 6374 |
6380 | 6375 |
6381 v8::Local<v8::Context> Isolate::GetCurrentContext() { | 6376 v8::Local<v8::Context> Isolate::GetCurrentContext() { |
6382 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); | 6377 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); |
6383 i::Context* context = isolate->context(); | 6378 i::Context* context = isolate->context(); |
6384 if (context == NULL) return Local<Context>(); | 6379 if (context == NULL) return Local<Context>(); |
6385 i::Context* native_context = context->global_object()->native_context(); | 6380 i::Context* native_context = context->native_context(); |
6386 if (native_context == NULL) return Local<Context>(); | 6381 if (native_context == NULL) return Local<Context>(); |
6387 return Utils::ToLocal(i::Handle<i::Context>(native_context)); | 6382 return Utils::ToLocal(i::Handle<i::Context>(native_context)); |
6388 } | 6383 } |
6389 | 6384 |
6390 | 6385 |
6391 v8::Local<v8::Context> Isolate::GetCallingContext() { | 6386 v8::Local<v8::Context> Isolate::GetCallingContext() { |
6392 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); | 6387 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); |
6393 i::Handle<i::Object> calling = isolate->GetCallingNativeContext(); | 6388 i::Handle<i::Object> calling = isolate->GetCallingNativeContext(); |
6394 if (calling.is_null()) return Local<Context>(); | 6389 if (calling.is_null()) return Local<Context>(); |
6395 return Utils::ToLocal(i::Handle<i::Context>::cast(calling)); | 6390 return Utils::ToLocal(i::Handle<i::Context>::cast(calling)); |
(...skipping 1234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7630 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); | 7625 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); |
7631 Address callback_address = | 7626 Address callback_address = |
7632 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 7627 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
7633 VMState<EXTERNAL> state(isolate); | 7628 VMState<EXTERNAL> state(isolate); |
7634 ExternalCallbackScope call_scope(isolate, callback_address); | 7629 ExternalCallbackScope call_scope(isolate, callback_address); |
7635 callback(info); | 7630 callback(info); |
7636 } | 7631 } |
7637 | 7632 |
7638 | 7633 |
7639 } } // namespace v8::internal | 7634 } } // namespace v8::internal |
OLD | NEW |