Index: src/api.cc |
diff --git a/src/api.cc b/src/api.cc |
index c6068214de3368e0f2b26d8126aca5983969826f..23f934751ebfbb4c1787b6c0d745655b5c7b2c25 100644 |
--- a/src/api.cc |
+++ b/src/api.cc |
@@ -3595,10 +3595,10 @@ void Debug::SetHostDispatchHandler(HostDispatchHandler handler, |
} |
-Handle<Value> Debug::Call(v8::Handle<v8::Function> fun, |
- v8::Handle<v8::Value> data) { |
- if (!i::V8::IsRunning()) return Handle<Value>(); |
- ON_BAILOUT("v8::Debug::Call()", return Handle<Value>()); |
+Local<Value> Debug::Call(v8::Handle<v8::Function> fun, |
+ v8::Handle<v8::Value> data) { |
+ if (!i::V8::IsRunning()) return Local<Value>(); |
+ ON_BAILOUT("v8::Debug::Call()", return Local<Value>()); |
ENTER_V8; |
i::Handle<i::Object> result; |
EXCEPTION_PREAMBLE(); |
@@ -3616,6 +3616,28 @@ Handle<Value> Debug::Call(v8::Handle<v8::Function> fun, |
} |
+Local<Value> Debug::GetMirror(v8::Handle<v8::Value> obj) { |
+ if (!i::V8::IsRunning()) return Local<Value>(); |
+ ON_BAILOUT("v8::Debug::GetMirror()", return Local<Value>()); |
+ ENTER_V8; |
+ v8::HandleScope scope; |
+ i::Debug::Load(); |
+ i::Handle<i::JSObject> debug(i::Debug::debug_context()->global()); |
+ i::Handle<i::String> name = i::Factory::LookupAsciiSymbol("MakeMirror"); |
+ i::Handle<i::Object> fun_obj = i::GetProperty(debug, name); |
+ i::Handle<i::JSFunction> fun = i::Handle<i::JSFunction>::cast(fun_obj); |
+ v8::Handle<v8::Function> v8_fun = Utils::ToLocal(fun); |
+ const int kArgc = 1; |
+ v8::Handle<v8::Value> argv[kArgc] = { obj }; |
+ EXCEPTION_PREAMBLE(); |
+ v8::Handle<v8::Value> result = v8_fun->Call(Utils::ToLocal(debug), |
+ kArgc, |
+ argv); |
+ EXCEPTION_BAILOUT_CHECK(Local<Value>()); |
+ return scope.Close(result); |
+} |
+ |
+ |
bool Debug::EnableAgent(const char* name, int port) { |
return i::Debugger::StartAgent(name, port); |
} |