| 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 "api.h" | 5 #include "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 6795 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6806 bool Debug::SetDebugEventListener(EventCallback that, Handle<Value> data) { | 6806 bool Debug::SetDebugEventListener(EventCallback that, Handle<Value> data) { |
| 6807 i::Isolate* isolate = i::Isolate::Current(); | 6807 i::Isolate* isolate = i::Isolate::Current(); |
| 6808 EnsureInitializedForIsolate(isolate, "v8::Debug::SetDebugEventListener()"); | 6808 EnsureInitializedForIsolate(isolate, "v8::Debug::SetDebugEventListener()"); |
| 6809 ON_BAILOUT(isolate, "v8::Debug::SetDebugEventListener()", return false); | 6809 ON_BAILOUT(isolate, "v8::Debug::SetDebugEventListener()", return false); |
| 6810 ENTER_V8(isolate); | 6810 ENTER_V8(isolate); |
| 6811 i::HandleScope scope(isolate); | 6811 i::HandleScope scope(isolate); |
| 6812 i::Handle<i::Object> foreign = isolate->factory()->undefined_value(); | 6812 i::Handle<i::Object> foreign = isolate->factory()->undefined_value(); |
| 6813 if (that != NULL) { | 6813 if (that != NULL) { |
| 6814 foreign = isolate->factory()->NewForeign(FUNCTION_ADDR(that)); | 6814 foreign = isolate->factory()->NewForeign(FUNCTION_ADDR(that)); |
| 6815 } | 6815 } |
| 6816 isolate->debugger()->SetEventListener(foreign, | 6816 isolate->debug()->SetEventListener(foreign, |
| 6817 Utils::OpenHandle(*data, true)); | 6817 Utils::OpenHandle(*data, true)); |
| 6818 return true; | 6818 return true; |
| 6819 } | 6819 } |
| 6820 | 6820 |
| 6821 | 6821 |
| 6822 void Debug::DebugBreak(Isolate* isolate) { | 6822 void Debug::DebugBreak(Isolate* isolate) { |
| 6823 reinterpret_cast<i::Isolate*>(isolate)->stack_guard()->RequestDebugBreak(); | 6823 reinterpret_cast<i::Isolate*>(isolate)->stack_guard()->RequestDebugBreak(); |
| 6824 } | 6824 } |
| 6825 | 6825 |
| 6826 | 6826 |
| 6827 void Debug::CancelDebugBreak(Isolate* isolate) { | 6827 void Debug::CancelDebugBreak(Isolate* isolate) { |
| 6828 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); | 6828 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); |
| 6829 internal_isolate->stack_guard()->ClearDebugBreak(); | 6829 internal_isolate->stack_guard()->ClearDebugBreak(); |
| 6830 } | 6830 } |
| 6831 | 6831 |
| 6832 | 6832 |
| 6833 void Debug::DebugBreakForCommand(Isolate* isolate, ClientData* data) { | 6833 void Debug::DebugBreakForCommand(Isolate* isolate, ClientData* data) { |
| 6834 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); | 6834 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); |
| 6835 internal_isolate->debugger()->EnqueueDebugCommand(data); | 6835 internal_isolate->debug()->EnqueueDebugCommand(data); |
| 6836 } | 6836 } |
| 6837 | 6837 |
| 6838 | 6838 |
| 6839 void Debug::SetMessageHandler(v8::Debug::MessageHandler handler) { | 6839 void Debug::SetMessageHandler(v8::Debug::MessageHandler handler) { |
| 6840 i::Isolate* isolate = i::Isolate::Current(); | 6840 i::Isolate* isolate = i::Isolate::Current(); |
| 6841 EnsureInitializedForIsolate(isolate, "v8::Debug::SetMessageHandler"); | 6841 EnsureInitializedForIsolate(isolate, "v8::Debug::SetMessageHandler"); |
| 6842 ENTER_V8(isolate); | 6842 ENTER_V8(isolate); |
| 6843 isolate->debugger()->SetMessageHandler(handler); | 6843 isolate->debug()->SetMessageHandler(handler); |
| 6844 } | 6844 } |
| 6845 | 6845 |
| 6846 | 6846 |
| 6847 void Debug::SendCommand(Isolate* isolate, | 6847 void Debug::SendCommand(Isolate* isolate, |
| 6848 const uint16_t* command, | 6848 const uint16_t* command, |
| 6849 int length, | 6849 int length, |
| 6850 ClientData* client_data) { | 6850 ClientData* client_data) { |
| 6851 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); | 6851 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); |
| 6852 internal_isolate->debugger()->EnqueueCommandMessage( | 6852 internal_isolate->debug()->EnqueueCommandMessage( |
| 6853 i::Vector<const uint16_t>(command, length), client_data); | 6853 i::Vector<const uint16_t>(command, length), client_data); |
| 6854 } | 6854 } |
| 6855 | 6855 |
| 6856 | 6856 |
| 6857 Local<Value> Debug::Call(v8::Handle<v8::Function> fun, | 6857 Local<Value> Debug::Call(v8::Handle<v8::Function> fun, |
| 6858 v8::Handle<v8::Value> data) { | 6858 v8::Handle<v8::Value> data) { |
| 6859 i::Isolate* isolate = i::Isolate::Current(); | 6859 i::Isolate* isolate = i::Isolate::Current(); |
| 6860 if (!isolate->IsInitialized()) return Local<Value>(); | 6860 if (!isolate->IsInitialized()) return Local<Value>(); |
| 6861 ON_BAILOUT(isolate, "v8::Debug::Call()", return Local<Value>()); | 6861 ON_BAILOUT(isolate, "v8::Debug::Call()", return Local<Value>()); |
| 6862 ENTER_V8(isolate); | 6862 ENTER_V8(isolate); |
| 6863 i::MaybeHandle<i::Object> maybe_result; | 6863 i::MaybeHandle<i::Object> maybe_result; |
| 6864 EXCEPTION_PREAMBLE(isolate); | 6864 EXCEPTION_PREAMBLE(isolate); |
| 6865 if (data.IsEmpty()) { | 6865 if (data.IsEmpty()) { |
| 6866 maybe_result = isolate->debugger()->Call( | 6866 maybe_result = isolate->debug()->Call( |
| 6867 Utils::OpenHandle(*fun), isolate->factory()->undefined_value()); | 6867 Utils::OpenHandle(*fun), isolate->factory()->undefined_value()); |
| 6868 } else { | 6868 } else { |
| 6869 maybe_result = isolate->debugger()->Call( | 6869 maybe_result = isolate->debug()->Call( |
| 6870 Utils::OpenHandle(*fun), Utils::OpenHandle(*data)); | 6870 Utils::OpenHandle(*fun), Utils::OpenHandle(*data)); |
| 6871 } | 6871 } |
| 6872 i::Handle<i::Object> result; | 6872 i::Handle<i::Object> result; |
| 6873 has_pending_exception = !maybe_result.ToHandle(&result); | 6873 has_pending_exception = !maybe_result.ToHandle(&result); |
| 6874 EXCEPTION_BAILOUT_CHECK(isolate, Local<Value>()); | 6874 EXCEPTION_BAILOUT_CHECK(isolate, Local<Value>()); |
| 6875 return Utils::ToLocal(result); | 6875 return Utils::ToLocal(result); |
| 6876 } | 6876 } |
| 6877 | 6877 |
| 6878 | 6878 |
| 6879 Local<Value> Debug::GetMirror(v8::Handle<v8::Value> obj) { | 6879 Local<Value> Debug::GetMirror(v8::Handle<v8::Value> obj) { |
| (...skipping 27 matching lines...) Expand all Loading... |
| 6907 | 6907 |
| 6908 void Debug::ProcessDebugMessages() { | 6908 void Debug::ProcessDebugMessages() { |
| 6909 i::Execution::ProcessDebugMessages(i::Isolate::Current(), true); | 6909 i::Execution::ProcessDebugMessages(i::Isolate::Current(), true); |
| 6910 } | 6910 } |
| 6911 | 6911 |
| 6912 | 6912 |
| 6913 Local<Context> Debug::GetDebugContext() { | 6913 Local<Context> Debug::GetDebugContext() { |
| 6914 i::Isolate* isolate = i::Isolate::Current(); | 6914 i::Isolate* isolate = i::Isolate::Current(); |
| 6915 EnsureInitializedForIsolate(isolate, "v8::Debug::GetDebugContext()"); | 6915 EnsureInitializedForIsolate(isolate, "v8::Debug::GetDebugContext()"); |
| 6916 ENTER_V8(isolate); | 6916 ENTER_V8(isolate); |
| 6917 return Utils::ToLocal(i::Isolate::Current()->debugger()->GetDebugContext()); | 6917 return Utils::ToLocal(i::Isolate::Current()->debug()->GetDebugContext()); |
| 6918 } | 6918 } |
| 6919 | 6919 |
| 6920 | 6920 |
| 6921 void Debug::SetLiveEditEnabled(Isolate* isolate, bool enable) { | 6921 void Debug::SetLiveEditEnabled(Isolate* isolate, bool enable) { |
| 6922 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); | 6922 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); |
| 6923 internal_isolate->debugger()->set_live_edit_enabled(enable); | 6923 internal_isolate->debug()->set_live_edit_enabled(enable); |
| 6924 } | 6924 } |
| 6925 | 6925 |
| 6926 | 6926 |
| 6927 Handle<String> CpuProfileNode::GetFunctionName() const { | 6927 Handle<String> CpuProfileNode::GetFunctionName() const { |
| 6928 i::Isolate* isolate = i::Isolate::Current(); | 6928 i::Isolate* isolate = i::Isolate::Current(); |
| 6929 const i::ProfileNode* node = reinterpret_cast<const i::ProfileNode*>(this); | 6929 const i::ProfileNode* node = reinterpret_cast<const i::ProfileNode*>(this); |
| 6930 const i::CodeEntry* entry = node->entry(); | 6930 const i::CodeEntry* entry = node->entry(); |
| 6931 i::Handle<i::String> name = | 6931 i::Handle<i::String> name = |
| 6932 isolate->factory()->InternalizeUtf8String(entry->name()); | 6932 isolate->factory()->InternalizeUtf8String(entry->name()); |
| 6933 if (!entry->has_name_prefix()) { | 6933 if (!entry->has_name_prefix()) { |
| (...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7566 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); | 7566 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); |
| 7567 Address callback_address = | 7567 Address callback_address = |
| 7568 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 7568 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
| 7569 VMState<EXTERNAL> state(isolate); | 7569 VMState<EXTERNAL> state(isolate); |
| 7570 ExternalCallbackScope call_scope(isolate, callback_address); | 7570 ExternalCallbackScope call_scope(isolate, callback_address); |
| 7571 callback(info); | 7571 callback(info); |
| 7572 } | 7572 } |
| 7573 | 7573 |
| 7574 | 7574 |
| 7575 } } // namespace v8::internal | 7575 } } // namespace v8::internal |
| OLD | NEW |