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

Side by Side Diff: src/api.cc

Issue 2549133002: [debug] Remove DebugInterface class (Closed)
Patch Set: Created 4 years 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
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 8818 matching lines...) Expand 10 before | Expand all | Expand 10 after
8829 Local<Value> value) { 8829 Local<Value> value) {
8830 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); 8830 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
8831 ENTER_V8(isolate); 8831 ENTER_V8(isolate);
8832 i::Handle<i::Object> val = Utils::OpenHandle(*value); 8832 i::Handle<i::Object> val = Utils::OpenHandle(*value);
8833 i::Handle<i::JSArray> result; 8833 i::Handle<i::JSArray> result;
8834 if (!i::Runtime::GetInternalProperties(isolate, val).ToHandle(&result)) 8834 if (!i::Runtime::GetInternalProperties(isolate, val).ToHandle(&result))
8835 return MaybeLocal<Array>(); 8835 return MaybeLocal<Array>();
8836 return Utils::ToLocal(result); 8836 return Utils::ToLocal(result);
8837 } 8837 }
8838 8838
8839 bool DebugInterface::SetDebugEventListener(Isolate* isolate, 8839 bool debug::DebugInterface::SetDebugEventListener(
8840 DebugInterface::EventCallback that, 8840 Isolate* isolate, debug::DebugInterface::EventCallback that,
8841 Local<Value> data) { 8841 Local<Value> data) {
8842 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); 8842 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
8843 ENTER_V8(i_isolate); 8843 ENTER_V8(i_isolate);
8844 i::HandleScope scope(i_isolate); 8844 i::HandleScope scope(i_isolate);
8845 i::Handle<i::Object> foreign = i_isolate->factory()->undefined_value(); 8845 i::Handle<i::Object> foreign = i_isolate->factory()->undefined_value();
8846 if (that != NULL) { 8846 if (that != NULL) {
8847 foreign = i_isolate->factory()->NewForeign(FUNCTION_ADDR(that)); 8847 foreign = i_isolate->factory()->NewForeign(FUNCTION_ADDR(that));
8848 } 8848 }
8849 i_isolate->debug()->SetEventListener(foreign, Utils::OpenHandle(*data, true)); 8849 i_isolate->debug()->SetEventListener(foreign, Utils::OpenHandle(*data, true));
8850 return true; 8850 return true;
8851 } 8851 }
8852 8852
8853 Local<Context> DebugInterface::GetDebugContext(Isolate* isolate) { 8853 Local<Context> debug::DebugInterface::GetDebugContext(Isolate* isolate) {
8854 return Debug::GetDebugContext(isolate); 8854 return Debug::GetDebugContext(isolate);
8855 } 8855 }
8856 8856
8857 MaybeLocal<Value> DebugInterface::Call(Local<Context> context, 8857 MaybeLocal<Value> debug::DebugInterface::Call(Local<Context> context,
8858 v8::Local<v8::Function> fun, 8858 v8::Local<v8::Function> fun,
8859 v8::Local<v8::Value> data) { 8859 v8::Local<v8::Value> data) {
8860 return Debug::Call(context, fun, data); 8860 return Debug::Call(context, fun, data);
8861 } 8861 }
8862 8862
8863 void DebugInterface::SetLiveEditEnabled(Isolate* isolate, bool enable) { 8863 void debug::DebugInterface::SetLiveEditEnabled(Isolate* isolate, bool enable) {
8864 Debug::SetLiveEditEnabled(isolate, enable); 8864 Debug::SetLiveEditEnabled(isolate, enable);
8865 } 8865 }
8866 8866
8867 void DebugInterface::DebugBreak(Isolate* isolate) { 8867 void debug::DebugInterface::DebugBreak(Isolate* isolate) {
8868 Debug::DebugBreak(isolate); 8868 Debug::DebugBreak(isolate);
8869 } 8869 }
8870 8870
8871 void DebugInterface::CancelDebugBreak(Isolate* isolate) { 8871 void debug::DebugInterface::CancelDebugBreak(Isolate* isolate) {
8872 Debug::CancelDebugBreak(isolate); 8872 Debug::CancelDebugBreak(isolate);
8873 } 8873 }
8874 8874
8875 MaybeLocal<Array> DebugInterface::GetInternalProperties(Isolate* isolate, 8875 MaybeLocal<Array> debug::DebugInterface::GetInternalProperties(
8876 Local<Value> value) { 8876 Isolate* isolate, Local<Value> value) {
8877 return Debug::GetInternalProperties(isolate, value); 8877 return Debug::GetInternalProperties(isolate, value);
8878 } 8878 }
8879 8879
8880 void DebugInterface::ChangeBreakOnException(Isolate* isolate, 8880 void debug::DebugInterface::ChangeBreakOnException(Isolate* isolate,
8881 ExceptionBreakState type) { 8881 ExceptionBreakState type) {
8882 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate); 8882 i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate);
8883 internal_isolate->debug()->ChangeBreakOnException( 8883 internal_isolate->debug()->ChangeBreakOnException(
8884 i::BreakException, type == BreakOnAnyException); 8884 i::BreakException, type == BreakOnAnyException);
8885 internal_isolate->debug()->ChangeBreakOnException(i::BreakUncaughtException, 8885 internal_isolate->debug()->ChangeBreakOnException(i::BreakUncaughtException,
8886 type != NoBreakOnException); 8886 type != NoBreakOnException);
8887 } 8887 }
8888 8888
8889 void DebugInterface::PrepareStep(Isolate* v8_isolate, StepAction action) { 8889 void debug::DebugInterface::PrepareStep(Isolate* v8_isolate,
8890 StepAction action) {
8890 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); 8891 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
8891 ENTER_V8(isolate); 8892 ENTER_V8(isolate);
8892 CHECK(isolate->debug()->CheckExecutionState()); 8893 CHECK(isolate->debug()->CheckExecutionState());
8893 // Clear all current stepping setup. 8894 // Clear all current stepping setup.
8894 isolate->debug()->ClearStepping(); 8895 isolate->debug()->ClearStepping();
8895 // Prepare step. 8896 // Prepare step.
8896 isolate->debug()->PrepareStep(static_cast<i::StepAction>(action)); 8897 isolate->debug()->PrepareStep(static_cast<i::StepAction>(action));
8897 } 8898 }
8898 8899
8899 void DebugInterface::ClearStepping(Isolate* v8_isolate) { 8900 void debug::DebugInterface::ClearStepping(Isolate* v8_isolate) {
8900 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); 8901 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
8901 ENTER_V8(isolate); 8902 ENTER_V8(isolate);
8902 // Clear all current stepping setup. 8903 // Clear all current stepping setup.
8903 isolate->debug()->ClearStepping(); 8904 isolate->debug()->ClearStepping();
8904 } 8905 }
8905 8906
8906 v8::Isolate* DebugInterface::Script::GetIsolate() const { 8907 v8::Isolate* debug::Script::GetIsolate() const {
8907 return reinterpret_cast<v8::Isolate*>(Utils::OpenHandle(this)->GetIsolate()); 8908 return reinterpret_cast<v8::Isolate*>(Utils::OpenHandle(this)->GetIsolate());
8908 } 8909 }
8909 8910
8910 ScriptOriginOptions DebugInterface::Script::OriginOptions() const { 8911 ScriptOriginOptions debug::Script::OriginOptions() const {
8911 return Utils::OpenHandle(this)->origin_options(); 8912 return Utils::OpenHandle(this)->origin_options();
8912 } 8913 }
8913 8914
8914 bool DebugInterface::Script::WasCompiled() const { 8915 bool debug::Script::WasCompiled() const {
8915 return Utils::OpenHandle(this)->compilation_state() == 8916 return Utils::OpenHandle(this)->compilation_state() ==
8916 i::Script::COMPILATION_STATE_COMPILED; 8917 i::Script::COMPILATION_STATE_COMPILED;
8917 } 8918 }
8918 8919
8919 int DebugInterface::Script::Id() const { return Utils::OpenHandle(this)->id(); } 8920 int debug::Script::Id() const { return Utils::OpenHandle(this)->id(); }
8920 8921
8921 int DebugInterface::Script::LineOffset() const { 8922 int debug::Script::LineOffset() const {
8922 return Utils::OpenHandle(this)->line_offset(); 8923 return Utils::OpenHandle(this)->line_offset();
8923 } 8924 }
8924 8925
8925 int DebugInterface::Script::ColumnOffset() const { 8926 int debug::Script::ColumnOffset() const {
8926 return Utils::OpenHandle(this)->column_offset(); 8927 return Utils::OpenHandle(this)->column_offset();
8927 } 8928 }
8928 8929
8929 std::vector<int> DebugInterface::Script::LineEnds() const { 8930 std::vector<int> debug::Script::LineEnds() const {
8930 i::Handle<i::Script> script = Utils::OpenHandle(this); 8931 i::Handle<i::Script> script = Utils::OpenHandle(this);
8931 if (script->type() == i::Script::TYPE_WASM) return std::vector<int>(); 8932 if (script->type() == i::Script::TYPE_WASM) return std::vector<int>();
8932 i::Isolate* isolate = script->GetIsolate(); 8933 i::Isolate* isolate = script->GetIsolate();
8933 i::HandleScope scope(isolate); 8934 i::HandleScope scope(isolate);
8934 i::Script::InitLineEnds(script); 8935 i::Script::InitLineEnds(script);
8935 CHECK(script->line_ends()->IsFixedArray()); 8936 CHECK(script->line_ends()->IsFixedArray());
8936 i::Handle<i::FixedArray> line_ends(i::FixedArray::cast(script->line_ends())); 8937 i::Handle<i::FixedArray> line_ends(i::FixedArray::cast(script->line_ends()));
8937 std::vector<int> result(line_ends->length()); 8938 std::vector<int> result(line_ends->length());
8938 for (int i = 0; i < line_ends->length(); ++i) { 8939 for (int i = 0; i < line_ends->length(); ++i) {
8939 i::Smi* line_end = i::Smi::cast(line_ends->get(i)); 8940 i::Smi* line_end = i::Smi::cast(line_ends->get(i));
8940 result[i] = line_end->value(); 8941 result[i] = line_end->value();
8941 } 8942 }
8942 return result; 8943 return result;
8943 } 8944 }
8944 8945
8945 MaybeLocal<String> DebugInterface::Script::Name() const { 8946 MaybeLocal<String> debug::Script::Name() const {
8946 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 8947 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
8947 i::HandleScope handle_scope(isolate); 8948 i::HandleScope handle_scope(isolate);
8948 i::Handle<i::Script> script = Utils::OpenHandle(this); 8949 i::Handle<i::Script> script = Utils::OpenHandle(this);
8949 i::Handle<i::Object> value(script->name(), isolate); 8950 i::Handle<i::Object> value(script->name(), isolate);
8950 if (!value->IsString()) return MaybeLocal<String>(); 8951 if (!value->IsString()) return MaybeLocal<String>();
8951 return Utils::ToLocal( 8952 return Utils::ToLocal(
8952 handle_scope.CloseAndEscape(i::Handle<i::String>::cast(value))); 8953 handle_scope.CloseAndEscape(i::Handle<i::String>::cast(value)));
8953 } 8954 }
8954 8955
8955 MaybeLocal<String> DebugInterface::Script::SourceURL() const { 8956 MaybeLocal<String> debug::Script::SourceURL() const {
8956 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 8957 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
8957 i::HandleScope handle_scope(isolate); 8958 i::HandleScope handle_scope(isolate);
8958 i::Handle<i::Script> script = Utils::OpenHandle(this); 8959 i::Handle<i::Script> script = Utils::OpenHandle(this);
8959 i::Handle<i::Object> value(script->source_url(), isolate); 8960 i::Handle<i::Object> value(script->source_url(), isolate);
8960 if (!value->IsString()) return MaybeLocal<String>(); 8961 if (!value->IsString()) return MaybeLocal<String>();
8961 return Utils::ToLocal( 8962 return Utils::ToLocal(
8962 handle_scope.CloseAndEscape(i::Handle<i::String>::cast(value))); 8963 handle_scope.CloseAndEscape(i::Handle<i::String>::cast(value)));
8963 } 8964 }
8964 8965
8965 MaybeLocal<String> DebugInterface::Script::SourceMappingURL() const { 8966 MaybeLocal<String> debug::Script::SourceMappingURL() const {
8966 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 8967 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
8967 i::HandleScope handle_scope(isolate); 8968 i::HandleScope handle_scope(isolate);
8968 i::Handle<i::Script> script = Utils::OpenHandle(this); 8969 i::Handle<i::Script> script = Utils::OpenHandle(this);
8969 i::Handle<i::Object> value(script->source_mapping_url(), isolate); 8970 i::Handle<i::Object> value(script->source_mapping_url(), isolate);
8970 if (!value->IsString()) return MaybeLocal<String>(); 8971 if (!value->IsString()) return MaybeLocal<String>();
8971 return Utils::ToLocal( 8972 return Utils::ToLocal(
8972 handle_scope.CloseAndEscape(i::Handle<i::String>::cast(value))); 8973 handle_scope.CloseAndEscape(i::Handle<i::String>::cast(value)));
8973 } 8974 }
8974 8975
8975 MaybeLocal<String> DebugInterface::Script::ContextData() const { 8976 MaybeLocal<String> debug::Script::ContextData() const {
8976 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 8977 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
8977 i::HandleScope handle_scope(isolate); 8978 i::HandleScope handle_scope(isolate);
8978 i::Handle<i::Script> script = Utils::OpenHandle(this); 8979 i::Handle<i::Script> script = Utils::OpenHandle(this);
8979 i::Handle<i::Object> value(script->context_data(), isolate); 8980 i::Handle<i::Object> value(script->context_data(), isolate);
8980 if (!value->IsString()) return MaybeLocal<String>(); 8981 if (!value->IsString()) return MaybeLocal<String>();
8981 return Utils::ToLocal( 8982 return Utils::ToLocal(
8982 handle_scope.CloseAndEscape(i::Handle<i::String>::cast(value))); 8983 handle_scope.CloseAndEscape(i::Handle<i::String>::cast(value)));
8983 } 8984 }
8984 8985
8985 MaybeLocal<String> DebugInterface::Script::Source() const { 8986 MaybeLocal<String> debug::Script::Source() const {
8986 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 8987 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
8987 i::HandleScope handle_scope(isolate); 8988 i::HandleScope handle_scope(isolate);
8988 i::Handle<i::Script> script = Utils::OpenHandle(this); 8989 i::Handle<i::Script> script = Utils::OpenHandle(this);
8989 i::Handle<i::Object> value(script->source(), isolate); 8990 i::Handle<i::Object> value(script->source(), isolate);
8990 if (!value->IsString()) return MaybeLocal<String>(); 8991 if (!value->IsString()) return MaybeLocal<String>();
8991 return Utils::ToLocal( 8992 return Utils::ToLocal(
8992 handle_scope.CloseAndEscape(i::Handle<i::String>::cast(value))); 8993 handle_scope.CloseAndEscape(i::Handle<i::String>::cast(value)));
8993 } 8994 }
8994 8995
8995 bool DebugInterface::Script::IsWasm() const { 8996 bool debug::Script::IsWasm() const {
8996 return Utils::OpenHandle(this)->type() == i::Script::TYPE_WASM; 8997 return Utils::OpenHandle(this)->type() == i::Script::TYPE_WASM;
8997 } 8998 }
8998 8999
8999 namespace { 9000 namespace {
9000 int GetSmiValue(i::Handle<i::FixedArray> array, int index) { 9001 int GetSmiValue(i::Handle<i::FixedArray> array, int index) {
9001 return i::Smi::cast(array->get(index))->value(); 9002 return i::Smi::cast(array->get(index))->value();
9002 } 9003 }
9003 } // namespace 9004 } // namespace
9004 9005
9005 bool DebugInterface::Script::GetPossibleBreakpoints( 9006 bool debug::Script::GetPossibleBreakpoints(
9006 const debug::Location& start, const debug::Location& end, 9007 const debug::Location& start, const debug::Location& end,
9007 std::vector<debug::Location>* locations) const { 9008 std::vector<debug::Location>* locations) const {
9008 CHECK(!start.IsEmpty()); 9009 CHECK(!start.IsEmpty());
9009 i::Handle<i::Script> script = Utils::OpenHandle(this); 9010 i::Handle<i::Script> script = Utils::OpenHandle(this);
9010 if (script->type() == i::Script::TYPE_WASM) { 9011 if (script->type() == i::Script::TYPE_WASM) {
9011 // TODO(clemensh): Return the proper thing once we support wasm breakpoints. 9012 // TODO(clemensh): Return the proper thing once we support wasm breakpoints.
9012 return false; 9013 return false;
9013 } 9014 }
9014 9015
9015 i::Script::InitLineEnds(script); 9016 i::Script::InitLineEnds(script);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
9047 line_offset = GetSmiValue(line_ends, current_line_end_index - 1) + 1; 9048 line_offset = GetSmiValue(line_ends, current_line_end_index - 1) + 1;
9048 } 9049 }
9049 locations->push_back(debug::Location( 9050 locations->push_back(debug::Location(
9050 current_line_end_index + script->line_offset(), 9051 current_line_end_index + script->line_offset(),
9051 offset - line_offset + 9052 offset - line_offset +
9052 (current_line_end_index == 0 ? script->column_offset() : 0))); 9053 (current_line_end_index == 0 ? script->column_offset() : 0)));
9053 } 9054 }
9054 return true; 9055 return true;
9055 } 9056 }
9056 9057
9057 int DebugInterface::Script::GetSourcePosition( 9058 int debug::Script::GetSourcePosition(const debug::Location& location) const {
9058 const debug::Location& location) const {
9059 i::Handle<i::Script> script = Utils::OpenHandle(this); 9059 i::Handle<i::Script> script = Utils::OpenHandle(this);
9060 if (script->type() == i::Script::TYPE_WASM) { 9060 if (script->type() == i::Script::TYPE_WASM) {
9061 // TODO(clemensh): Return the proper thing for wasm. 9061 // TODO(clemensh): Return the proper thing for wasm.
9062 return 0; 9062 return 0;
9063 } 9063 }
9064 9064
9065 int line = std::max(location.GetLineNumber() - script->line_offset(), 0); 9065 int line = std::max(location.GetLineNumber() - script->line_offset(), 0);
9066 int column = location.GetColumnNumber(); 9066 int column = location.GetColumnNumber();
9067 if (line == 0) { 9067 if (line == 0) {
9068 column = std::max(0, column - script->column_offset()); 9068 column = std::max(0, column - script->column_offset());
9069 } 9069 }
9070 9070
9071 i::Script::InitLineEnds(script); 9071 i::Script::InitLineEnds(script);
9072 CHECK(script->line_ends()->IsFixedArray()); 9072 CHECK(script->line_ends()->IsFixedArray());
9073 i::Handle<i::FixedArray> line_ends = i::Handle<i::FixedArray>::cast( 9073 i::Handle<i::FixedArray> line_ends = i::Handle<i::FixedArray>::cast(
9074 i::handle(script->line_ends(), script->GetIsolate())); 9074 i::handle(script->line_ends(), script->GetIsolate()));
9075 CHECK(line_ends->length()); 9075 CHECK(line_ends->length());
9076 if (line >= line_ends->length()) 9076 if (line >= line_ends->length())
9077 return GetSmiValue(line_ends, line_ends->length() - 1); 9077 return GetSmiValue(line_ends, line_ends->length() - 1);
9078 int line_offset = GetSmiValue(line_ends, line); 9078 int line_offset = GetSmiValue(line_ends, line);
9079 if (line == 0) return std::min(column, line_offset); 9079 if (line == 0) return std::min(column, line_offset);
9080 int prev_line_offset = GetSmiValue(line_ends, line - 1); 9080 int prev_line_offset = GetSmiValue(line_ends, line - 1);
9081 return std::min(prev_line_offset + column + 1, line_offset); 9081 return std::min(prev_line_offset + column + 1, line_offset);
9082 } 9082 }
9083 9083
9084 MaybeLocal<DebugInterface::Script> DebugInterface::Script::Wrap( 9084 MaybeLocal<debug::Script> debug::Script::Wrap(v8::Isolate* v8_isolate,
9085 v8::Isolate* v8_isolate, v8::Local<v8::Object> script) { 9085 v8::Local<v8::Object> script) {
9086 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); 9086 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
9087 ENTER_V8(isolate); 9087 ENTER_V8(isolate);
9088 i::HandleScope handle_scope(isolate); 9088 i::HandleScope handle_scope(isolate);
9089 i::Handle<i::JSReceiver> script_receiver(Utils::OpenHandle(*script)); 9089 i::Handle<i::JSReceiver> script_receiver(Utils::OpenHandle(*script));
9090 if (!script_receiver->IsJSValue()) return MaybeLocal<Script>(); 9090 if (!script_receiver->IsJSValue()) return MaybeLocal<Script>();
9091 i::Handle<i::Object> script_value( 9091 i::Handle<i::Object> script_value(
9092 i::Handle<i::JSValue>::cast(script_receiver)->value(), isolate); 9092 i::Handle<i::JSValue>::cast(script_receiver)->value(), isolate);
9093 if (!script_value->IsScript()) { 9093 if (!script_value->IsScript()) {
9094 return MaybeLocal<Script>(); 9094 return MaybeLocal<Script>();
9095 } 9095 }
9096 i::Handle<i::Script> script_obj = i::Handle<i::Script>::cast(script_value); 9096 i::Handle<i::Script> script_obj = i::Handle<i::Script>::cast(script_value);
9097 if (script_obj->type() != i::Script::TYPE_NORMAL && 9097 if (script_obj->type() != i::Script::TYPE_NORMAL &&
9098 script_obj->type() != i::Script::TYPE_WASM) { 9098 script_obj->type() != i::Script::TYPE_WASM) {
9099 return MaybeLocal<Script>(); 9099 return MaybeLocal<Script>();
9100 } 9100 }
9101 return ToApiHandle<DebugInterface::Script>( 9101 return ToApiHandle<debug::Script>(handle_scope.CloseAndEscape(script_obj));
9102 handle_scope.CloseAndEscape(script_obj));
9103 } 9102 }
9104 9103
9105 debug::Location::Location(int line_number, int column_number) 9104 debug::Location::Location(int line_number, int column_number)
9106 : line_number_(line_number), column_number_(column_number) { 9105 : line_number_(line_number), column_number_(column_number) {
9107 CHECK(line_number >= 0); 9106 CHECK(line_number >= 0);
9108 CHECK(column_number >= 0); 9107 CHECK(column_number >= 0);
9109 } 9108 }
9110 9109
9111 debug::Location::Location() : line_number_(-1), column_number_(-1) {} 9110 debug::Location::Location() : line_number_(-1), column_number_(-1) {}
9112 9111
9113 int debug::Location::GetLineNumber() const { 9112 int debug::Location::GetLineNumber() const {
9114 CHECK(line_number_ >= 0); 9113 CHECK(line_number_ >= 0);
9115 return line_number_; 9114 return line_number_;
9116 } 9115 }
9117 9116
9118 int debug::Location::GetColumnNumber() const { 9117 int debug::Location::GetColumnNumber() const {
9119 CHECK(column_number_ >= 0); 9118 CHECK(column_number_ >= 0);
9120 return column_number_; 9119 return column_number_;
9121 } 9120 }
9122 9121
9123 bool debug::Location::IsEmpty() const { 9122 bool debug::Location::IsEmpty() const {
9124 return line_number_ == -1 && column_number_ == -1; 9123 return line_number_ == -1 && column_number_ == -1;
9125 } 9124 }
9126 9125
9127 void DebugInterface::GetLoadedScripts( 9126 void debug::DebugInterface::GetLoadedScripts(
9128 v8::Isolate* v8_isolate, 9127 v8::Isolate* v8_isolate, PersistentValueVector<debug::Script>& scripts) {
9129 PersistentValueVector<DebugInterface::Script>& scripts) {
9130 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); 9128 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
9131 ENTER_V8(isolate); 9129 ENTER_V8(isolate);
9132 // TODO(kozyatinskiy): remove this GC once tests are dealt with. 9130 // TODO(kozyatinskiy): remove this GC once tests are dealt with.
9133 isolate->heap()->CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask, 9131 isolate->heap()->CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask,
9134 i::GarbageCollectionReason::kDebugger); 9132 i::GarbageCollectionReason::kDebugger);
9135 { 9133 {
9136 i::DisallowHeapAllocation no_gc; 9134 i::DisallowHeapAllocation no_gc;
9137 i::Script::Iterator iterator(isolate); 9135 i::Script::Iterator iterator(isolate);
9138 i::Script* script; 9136 i::Script* script;
9139 while ((script = iterator.Next())) { 9137 while ((script = iterator.Next())) {
9140 if (script->type() != i::Script::TYPE_NORMAL) continue; 9138 if (script->type() != i::Script::TYPE_NORMAL) continue;
9141 if (script->HasValidSource()) { 9139 if (script->HasValidSource()) {
9142 i::HandleScope handle_scope(isolate); 9140 i::HandleScope handle_scope(isolate);
9143 i::Handle<i::Script> script_handle(script, isolate); 9141 i::Handle<i::Script> script_handle(script, isolate);
9144 scripts.Append(ToApiHandle<Script>(script_handle)); 9142 scripts.Append(ToApiHandle<Script>(script_handle));
9145 } 9143 }
9146 } 9144 }
9147 } 9145 }
9148 } 9146 }
9149 9147
9150 debug::WasmDisassembly DebugInterface::DisassembleWasmFunction( 9148 debug::WasmDisassembly debug::DebugInterface::DisassembleWasmFunction(
9151 Isolate* v8_isolate, Local<Object> v8_script, int function_index) { 9149 Isolate* v8_isolate, Local<Object> v8_script, int function_index) {
9152 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); 9150 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
9153 if (v8_script.IsEmpty()) return {}; 9151 if (v8_script.IsEmpty()) return {};
9154 i::Handle<i::Object> script_wrapper = Utils::OpenHandle(*v8_script); 9152 i::Handle<i::Object> script_wrapper = Utils::OpenHandle(*v8_script);
9155 if (!script_wrapper->IsJSValue()) return {}; 9153 if (!script_wrapper->IsJSValue()) return {};
9156 i::Handle<i::Object> script_obj( 9154 i::Handle<i::Object> script_obj(
9157 i::Handle<i::JSValue>::cast(script_wrapper)->value(), isolate); 9155 i::Handle<i::JSValue>::cast(script_wrapper)->value(), isolate);
9158 if (!script_obj->IsScript()) return {}; 9156 if (!script_obj->IsScript()) return {};
9159 i::Handle<i::Script> script = i::Handle<i::Script>::cast(script_obj); 9157 i::Handle<i::Script> script = i::Handle<i::Script>::cast(script_obj);
9160 if (script->type() != i::Script::TYPE_WASM) return {}; 9158 if (script->type() != i::Script::TYPE_WASM) return {};
9161 i::Handle<i::WasmCompiledModule> compiled_module( 9159 i::Handle<i::WasmCompiledModule> compiled_module(
9162 i::WasmCompiledModule::cast(script->wasm_compiled_module()), isolate); 9160 i::WasmCompiledModule::cast(script->wasm_compiled_module()), isolate);
9163 return compiled_module->DisassembleFunction(function_index); 9161 return compiled_module->DisassembleFunction(function_index);
9164 } 9162 }
9165 9163
9166 MaybeLocal<UnboundScript> DebugInterface::CompileInspectorScript( 9164 MaybeLocal<UnboundScript> debug::DebugInterface::CompileInspectorScript(
9167 Isolate* v8_isolate, Local<String> source) { 9165 Isolate* v8_isolate, Local<String> source) {
9168 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); 9166 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
9169 PREPARE_FOR_DEBUG_INTERFACE_EXECUTION_WITH_ISOLATE(isolate, UnboundScript); 9167 PREPARE_FOR_DEBUG_INTERFACE_EXECUTION_WITH_ISOLATE(isolate, UnboundScript);
9170 i::ScriptData* script_data = NULL; 9168 i::ScriptData* script_data = NULL;
9171 i::Handle<i::String> str = Utils::OpenHandle(*source); 9169 i::Handle<i::String> str = Utils::OpenHandle(*source);
9172 i::Handle<i::SharedFunctionInfo> result; 9170 i::Handle<i::SharedFunctionInfo> result;
9173 { 9171 {
9174 ScriptOriginOptions origin_options; 9172 ScriptOriginOptions origin_options;
9175 result = i::Compiler::GetSharedFunctionInfoForScript( 9173 result = i::Compiler::GetSharedFunctionInfoForScript(
9176 str, i::Handle<i::Object>(), 0, 0, origin_options, 9174 str, i::Handle<i::Object>(), 0, 0, origin_options,
(...skipping 686 matching lines...) Expand 10 before | Expand all | Expand 10 after
9863 Address callback_address = 9861 Address callback_address =
9864 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); 9862 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback));
9865 VMState<EXTERNAL> state(isolate); 9863 VMState<EXTERNAL> state(isolate);
9866 ExternalCallbackScope call_scope(isolate, callback_address); 9864 ExternalCallbackScope call_scope(isolate, callback_address);
9867 callback(info); 9865 callback(info);
9868 } 9866 }
9869 9867
9870 9868
9871 } // namespace internal 9869 } // namespace internal
9872 } // namespace v8 9870 } // namespace v8
OLDNEW
« no previous file with comments | « src/api.h ('k') | src/debug/debug.h » ('j') | src/debug/debug-interface.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698