src: apply debug force load fixups from 41e63fb
authorAli Ijaz Sheikh <ofrobots@google.com>
Sun, 23 Aug 2015 13:28:57 +0000 (06:28 -0700)
committerRod Vagg <rod@vagg.org>
Sun, 6 Sep 2015 11:39:03 +0000 (21:39 +1000)
Apply the src/node_contextify.cc and lib/module.js fixups from @bnoordhuis
https://github.com/nodejs/node/commit/41e63fb088a29fa05e16fb0d997255678134c043

PR-URL: https://github.com/nodejs/node/pull/2509
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
lib/module.js
src/node_contextify.cc

index aaa6220..da8a906 100644 (file)
@@ -423,6 +423,10 @@ Module.prototype._compile = function(content, filename) {
 
     // Set breakpoint on module start
     if (filename === resolvedArgv) {
+      // Installing this dummy debug event listener tells V8 to start
+      // the debugger.  Without it, the setBreakPoint() fails with an
+      // 'illegal access' error.
+      global.v8debug.Debug.setListener(function() {});
       global.v8debug.Debug.setBreakPoint(compiledWrapper, 0, 0);
     }
   }
index ae043eb..e1f11c6 100644 (file)
@@ -261,6 +261,12 @@ class ContextifyContext {
     if (script_source.IsEmpty())
       return;  // Exception pending.
     Local<Context> debug_context = Debug::GetDebugContext();
+    if (debug_context.IsEmpty()) {
+      // Force-load the debug context.
+      Debug::GetMirror(args.GetIsolate()->GetCurrentContext(), args[0]);
+      debug_context = Debug::GetDebugContext();
+      CHECK(!debug_context.IsEmpty());
+    }
     Environment* env = Environment::GetCurrent(args);
     ScopedEnvironment env_scope(debug_context, env);
     Context::Scope context_scope(debug_context);