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

Side by Side Diff: src/api.cc

Issue 388783004: Do not expose all timer events to the API callback. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/compiler.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 1656 matching lines...) Expand 10 before | Expand all | Expand 10 after
1667 1667
1668 Local<Value> Script::Run() { 1668 Local<Value> Script::Run() {
1669 i::Handle<i::Object> obj = Utils::OpenHandle(this, true); 1669 i::Handle<i::Object> obj = Utils::OpenHandle(this, true);
1670 // If execution is terminating, Compile(..)->Run() requires this 1670 // If execution is terminating, Compile(..)->Run() requires this
1671 // check. 1671 // check.
1672 if (obj.is_null()) return Local<Value>(); 1672 if (obj.is_null()) return Local<Value>();
1673 i::Isolate* isolate = i::Handle<i::HeapObject>::cast(obj)->GetIsolate(); 1673 i::Isolate* isolate = i::Handle<i::HeapObject>::cast(obj)->GetIsolate();
1674 ON_BAILOUT(isolate, "v8::Script::Run()", return Local<Value>()); 1674 ON_BAILOUT(isolate, "v8::Script::Run()", return Local<Value>());
1675 LOG_API(isolate, "Script::Run"); 1675 LOG_API(isolate, "Script::Run");
1676 ENTER_V8(isolate); 1676 ENTER_V8(isolate);
1677 i::Logger::TimerEventScope timer_scope( 1677 TimerEventScope<TimerEventExecute> timer_scope(isolate);
1678 isolate, i::Logger::TimerEventScope::v8_execute);
1679 i::HandleScope scope(isolate); 1678 i::HandleScope scope(isolate);
1680 i::Handle<i::JSFunction> fun = i::Handle<i::JSFunction>::cast(obj); 1679 i::Handle<i::JSFunction> fun = i::Handle<i::JSFunction>::cast(obj);
1681 EXCEPTION_PREAMBLE(isolate); 1680 EXCEPTION_PREAMBLE(isolate);
1682 i::Handle<i::Object> receiver(isolate->global_proxy(), isolate); 1681 i::Handle<i::Object> receiver(isolate->global_proxy(), isolate);
1683 i::Handle<i::Object> result; 1682 i::Handle<i::Object> result;
1684 has_pending_exception = !i::Execution::Call( 1683 has_pending_exception = !i::Execution::Call(
1685 isolate, fun, receiver, 0, NULL).ToHandle(&result); 1684 isolate, fun, receiver, 0, NULL).ToHandle(&result);
1686 EXCEPTION_BAILOUT_CHECK_DO_CALLBACK(isolate, Local<Value>()); 1685 EXCEPTION_BAILOUT_CHECK_DO_CALLBACK(isolate, Local<Value>());
1687 return Utils::ToLocal(scope.CloseAndEscape(result)); 1686 return Utils::ToLocal(scope.CloseAndEscape(result));
1688 } 1687 }
(...skipping 2188 matching lines...) Expand 10 before | Expand all | Expand 10 after
3877 3876
3878 3877
3879 Local<v8::Value> Object::CallAsFunction(v8::Handle<v8::Value> recv, 3878 Local<v8::Value> Object::CallAsFunction(v8::Handle<v8::Value> recv,
3880 int argc, 3879 int argc,
3881 v8::Handle<v8::Value> argv[]) { 3880 v8::Handle<v8::Value> argv[]) {
3882 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 3881 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
3883 ON_BAILOUT(isolate, "v8::Object::CallAsFunction()", 3882 ON_BAILOUT(isolate, "v8::Object::CallAsFunction()",
3884 return Local<v8::Value>()); 3883 return Local<v8::Value>());
3885 LOG_API(isolate, "Object::CallAsFunction"); 3884 LOG_API(isolate, "Object::CallAsFunction");
3886 ENTER_V8(isolate); 3885 ENTER_V8(isolate);
3887 i::Logger::TimerEventScope timer_scope( 3886 TimerEventScope<TimerEventExecute> timer_scope(isolate);
3888 isolate, i::Logger::TimerEventScope::v8_execute);
3889 i::HandleScope scope(isolate); 3887 i::HandleScope scope(isolate);
3890 i::Handle<i::JSObject> obj = Utils::OpenHandle(this); 3888 i::Handle<i::JSObject> obj = Utils::OpenHandle(this);
3891 i::Handle<i::Object> recv_obj = Utils::OpenHandle(*recv); 3889 i::Handle<i::Object> recv_obj = Utils::OpenHandle(*recv);
3892 STATIC_ASSERT(sizeof(v8::Handle<v8::Value>) == sizeof(i::Object**)); 3890 STATIC_ASSERT(sizeof(v8::Handle<v8::Value>) == sizeof(i::Object**));
3893 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv); 3891 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv);
3894 i::Handle<i::JSFunction> fun = i::Handle<i::JSFunction>(); 3892 i::Handle<i::JSFunction> fun = i::Handle<i::JSFunction>();
3895 if (obj->IsJSFunction()) { 3893 if (obj->IsJSFunction()) {
3896 fun = i::Handle<i::JSFunction>::cast(obj); 3894 fun = i::Handle<i::JSFunction>::cast(obj);
3897 } else { 3895 } else {
3898 EXCEPTION_PREAMBLE(isolate); 3896 EXCEPTION_PREAMBLE(isolate);
(...skipping 13 matching lines...) Expand all
3912 } 3910 }
3913 3911
3914 3912
3915 Local<v8::Value> Object::CallAsConstructor(int argc, 3913 Local<v8::Value> Object::CallAsConstructor(int argc,
3916 v8::Handle<v8::Value> argv[]) { 3914 v8::Handle<v8::Value> argv[]) {
3917 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 3915 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
3918 ON_BAILOUT(isolate, "v8::Object::CallAsConstructor()", 3916 ON_BAILOUT(isolate, "v8::Object::CallAsConstructor()",
3919 return Local<v8::Object>()); 3917 return Local<v8::Object>());
3920 LOG_API(isolate, "Object::CallAsConstructor"); 3918 LOG_API(isolate, "Object::CallAsConstructor");
3921 ENTER_V8(isolate); 3919 ENTER_V8(isolate);
3922 i::Logger::TimerEventScope timer_scope( 3920 TimerEventScope<TimerEventExecute> timer_scope(isolate);
3923 isolate, i::Logger::TimerEventScope::v8_execute);
3924 i::HandleScope scope(isolate); 3921 i::HandleScope scope(isolate);
3925 i::Handle<i::JSObject> obj = Utils::OpenHandle(this); 3922 i::Handle<i::JSObject> obj = Utils::OpenHandle(this);
3926 STATIC_ASSERT(sizeof(v8::Handle<v8::Value>) == sizeof(i::Object**)); 3923 STATIC_ASSERT(sizeof(v8::Handle<v8::Value>) == sizeof(i::Object**));
3927 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv); 3924 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv);
3928 if (obj->IsJSFunction()) { 3925 if (obj->IsJSFunction()) {
3929 i::Handle<i::JSFunction> fun = i::Handle<i::JSFunction>::cast(obj); 3926 i::Handle<i::JSFunction> fun = i::Handle<i::JSFunction>::cast(obj);
3930 EXCEPTION_PREAMBLE(isolate); 3927 EXCEPTION_PREAMBLE(isolate);
3931 i::Handle<i::Object> returned; 3928 i::Handle<i::Object> returned;
3932 has_pending_exception = !i::Execution::New( 3929 has_pending_exception = !i::Execution::New(
3933 fun, argc, args).ToHandle(&returned); 3930 fun, argc, args).ToHandle(&returned);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
3972 } 3969 }
3973 3970
3974 3971
3975 Local<v8::Object> Function::NewInstance(int argc, 3972 Local<v8::Object> Function::NewInstance(int argc,
3976 v8::Handle<v8::Value> argv[]) const { 3973 v8::Handle<v8::Value> argv[]) const {
3977 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 3974 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
3978 ON_BAILOUT(isolate, "v8::Function::NewInstance()", 3975 ON_BAILOUT(isolate, "v8::Function::NewInstance()",
3979 return Local<v8::Object>()); 3976 return Local<v8::Object>());
3980 LOG_API(isolate, "Function::NewInstance"); 3977 LOG_API(isolate, "Function::NewInstance");
3981 ENTER_V8(isolate); 3978 ENTER_V8(isolate);
3982 i::Logger::TimerEventScope timer_scope( 3979 TimerEventScope<TimerEventExecute> timer_scope(isolate);
3983 isolate, i::Logger::TimerEventScope::v8_execute);
3984 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate)); 3980 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate));
3985 i::Handle<i::JSFunction> function = Utils::OpenHandle(this); 3981 i::Handle<i::JSFunction> function = Utils::OpenHandle(this);
3986 STATIC_ASSERT(sizeof(v8::Handle<v8::Value>) == sizeof(i::Object**)); 3982 STATIC_ASSERT(sizeof(v8::Handle<v8::Value>) == sizeof(i::Object**));
3987 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv); 3983 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv);
3988 EXCEPTION_PREAMBLE(isolate); 3984 EXCEPTION_PREAMBLE(isolate);
3989 i::Handle<i::Object> returned; 3985 i::Handle<i::Object> returned;
3990 has_pending_exception = !i::Execution::New( 3986 has_pending_exception = !i::Execution::New(
3991 function, argc, args).ToHandle(&returned); 3987 function, argc, args).ToHandle(&returned);
3992 EXCEPTION_BAILOUT_CHECK_DO_CALLBACK(isolate, Local<v8::Object>()); 3988 EXCEPTION_BAILOUT_CHECK_DO_CALLBACK(isolate, Local<v8::Object>());
3993 return scope.Escape(Utils::ToLocal(i::Handle<i::JSObject>::cast(returned))); 3989 return scope.Escape(Utils::ToLocal(i::Handle<i::JSObject>::cast(returned)));
3994 } 3990 }
3995 3991
3996 3992
3997 Local<v8::Value> Function::Call(v8::Handle<v8::Value> recv, int argc, 3993 Local<v8::Value> Function::Call(v8::Handle<v8::Value> recv, int argc,
3998 v8::Handle<v8::Value> argv[]) { 3994 v8::Handle<v8::Value> argv[]) {
3999 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 3995 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
4000 ON_BAILOUT(isolate, "v8::Function::Call()", return Local<v8::Value>()); 3996 ON_BAILOUT(isolate, "v8::Function::Call()", return Local<v8::Value>());
4001 LOG_API(isolate, "Function::Call"); 3997 LOG_API(isolate, "Function::Call");
4002 ENTER_V8(isolate); 3998 ENTER_V8(isolate);
4003 i::Logger::TimerEventScope timer_scope( 3999 TimerEventScope<TimerEventExecute> timer_scope(isolate);
4004 isolate, i::Logger::TimerEventScope::v8_execute);
4005 i::HandleScope scope(isolate); 4000 i::HandleScope scope(isolate);
4006 i::Handle<i::JSFunction> fun = Utils::OpenHandle(this); 4001 i::Handle<i::JSFunction> fun = Utils::OpenHandle(this);
4007 i::Handle<i::Object> recv_obj = Utils::OpenHandle(*recv); 4002 i::Handle<i::Object> recv_obj = Utils::OpenHandle(*recv);
4008 STATIC_ASSERT(sizeof(v8::Handle<v8::Value>) == sizeof(i::Object**)); 4003 STATIC_ASSERT(sizeof(v8::Handle<v8::Value>) == sizeof(i::Object**));
4009 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv); 4004 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv);
4010 EXCEPTION_PREAMBLE(isolate); 4005 EXCEPTION_PREAMBLE(isolate);
4011 i::Handle<i::Object> returned; 4006 i::Handle<i::Object> returned;
4012 has_pending_exception = !i::Execution::Call( 4007 has_pending_exception = !i::Execution::Call(
4013 isolate, fun, recv_obj, argc, args, true).ToHandle(&returned); 4008 isolate, fun, recv_obj, argc, args, true).ToHandle(&returned);
4014 EXCEPTION_BAILOUT_CHECK_DO_CALLBACK(isolate, Local<Object>()); 4009 EXCEPTION_BAILOUT_CHECK_DO_CALLBACK(isolate, Local<Object>());
(...skipping 3614 matching lines...) Expand 10 before | Expand all | Expand 10 after
7629 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); 7624 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate());
7630 Address callback_address = 7625 Address callback_address =
7631 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); 7626 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback));
7632 VMState<EXTERNAL> state(isolate); 7627 VMState<EXTERNAL> state(isolate);
7633 ExternalCallbackScope call_scope(isolate, callback_address); 7628 ExternalCallbackScope call_scope(isolate, callback_address);
7634 callback(info); 7629 callback(info);
7635 } 7630 }
7636 7631
7637 7632
7638 } } // namespace v8::internal 7633 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | src/compiler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698