Index: src/bootstrapper.cc |
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc |
index c98a13af179f76e063064d1f83871311078b2651..142d28ec0f191c53be61ed1e23d1fdfe46d968f7 100644 |
--- a/src/bootstrapper.cc |
+++ b/src/bootstrapper.cc |
@@ -4196,6 +4196,26 @@ bool Genesis::InstallSpecialObjects(Handle<Context> native_context) { |
WasmJs::Install(isolate); |
} |
+ // Expose the debug global object in global if a name for it is specified. |
+ if (FLAG_expose_debug_as != NULL && strlen(FLAG_expose_debug_as) != 0) { |
+ // If loading fails we just bail out without installing the |
+ // debugger but without tanking the whole context. |
+ Debug* debug = isolate->debug(); |
+ if (!debug->Load()) return true; |
+ Handle<Context> debug_context = debug->debug_context(); |
+ // Set the security token for the debugger context to the same as |
+ // the shell native context to allow calling between these (otherwise |
+ // exposing debug global object doesn't make much sense). |
+ debug_context->set_security_token(native_context->security_token()); |
+ Handle<String> debug_string = |
+ factory->InternalizeUtf8String(FLAG_expose_debug_as); |
+ uint32_t index; |
+ if (debug_string->AsArrayIndex(&index)) return true; |
+ Handle<Object> global_proxy(debug_context->global_proxy(), isolate); |
+ JSObject::AddProperty(handle(native_context->global_proxy()), debug_string, |
+ global_proxy, DONT_ENUM); |
+ } |
+ |
return true; |
} |