From 008adca72f5917d8a80cc252572f0b1e80ed4e69 Mon Sep 17 00:00:00 2001 From: Oliver Buchtala Date: Thu, 22 Nov 2012 22:50:50 +0100 Subject: [PATCH] Provide more control about the target object/namespace where a v8 module is registered to. --- Lib/javascript/v8/javascriptcode.swg | 3 +-- Tools/javascript/v8_shell.cxx | 7 +++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg index eb95cb1bf..1b196cffd 100644 --- a/Lib/javascript/v8/javascriptcode.swg +++ b/Lib/javascript/v8/javascriptcode.swg @@ -386,12 +386,11 @@ fail: %{ extern "C" { -void $jsname_initialize(v8::Handle context) +void $jsname_initialize(v8::Handle context, v8::Handle global_obj) { SWIG_InitializeModule(0); v8::HandleScope scope; - v8::Local global_obj = context->Global(); // a class template for creating proxies of undefined types SWIGV8_SWIGTYPE_Proxy_class_templ = SWIGV8_CreateClassTemplate("SwigProxy"); diff --git a/Tools/javascript/v8_shell.cxx b/Tools/javascript/v8_shell.cxx index 71960caba..8b45ac0d6 100755 --- a/Tools/javascript/v8_shell.cxx +++ b/Tools/javascript/v8_shell.cxx @@ -9,7 +9,7 @@ #include "js_shell.h" -typedef int (*V8ExtensionRegistrar) (v8::Handle); +typedef int (*V8ExtensionRegistrar) (v8::Handle, v8::Handle); class V8Shell: public JSShell { @@ -153,10 +153,13 @@ bool V8Shell::InitializeEngine() { void V8Shell::ExtendEngine() { + v8::HandleScope scope; + v8::Local global = context->Global(); + // register extensions for(std::vector::iterator it=module_initializers.begin(); it != module_initializers.end(); ++it) { - (*it)(context); + (*it)(context, global); } }