diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg index 2adbd1307..070ef2e2d 100644 --- a/Lib/javascript/v8/javascriptcode.swg +++ b/Lib/javascript/v8/javascriptcode.swg @@ -5,7 +5,8 @@ v8::Handle $jswrapper(const v8::Arguments& args) { $jslocals $jscode - return SWIG_V8_NewPointerObj(result, SWIGTYPE_$jsmangledtype, SWIG_POINTER_OWN); + SWIG_V8_SetPrivateData(self, result, SWIGTYPE_$jsmangledtype, SWIG_POINTER_OWN); + return scope.Close(self); goto fail; fail: @@ -54,10 +55,12 @@ fail: return scope.Close(v8::Undefined()); }%} +/* %fragment ("JS_mainctordefn", "templates") %{ // TODO: implement JS_mainctordefn %} +*/ %fragment ("JS_ctor_dispatch_case", "templates") %{ diff --git a/Lib/javascript/v8/javascriptruntime.swg b/Lib/javascript/v8/javascriptruntime.swg index d94587419..ce1367070 100644 --- a/Lib/javascript/v8/javascriptruntime.swg +++ b/Lib/javascript/v8/javascriptruntime.swg @@ -77,6 +77,15 @@ int SWIG_V8_ConvertInstancePtr(v8::Handle objRef, void** ptr, swig_t return SWIG_OK; } +void SWIG_V8_SetPrivateData(v8::Handle obj, void* ptr, swig_type_info *info, int flags) { + SWIG_PRV_DATA* cdata = (SWIG_PRV_DATA*) new SWIG_PRV_DATA; + cdata->swigCObject = ptr; + cdata->swigCMemOwn = (flags & SWIG_POINTER_OWN) ? 1 : 0; + cdata->info = info; + + obj->SetInternalField(0, v8::External::New(cdata)); +} + int SWIG_V8_ConvertPtr(v8::Handle valRef, void** ptr, swig_type_info *info, int flags) { if(!valRef->IsObject()) { return SWIG_TypeError; @@ -103,14 +112,9 @@ v8::Handle SWIG_V8_NewPointerObj(void *ptr, swig_type_info *info, in } v8::Local result = inst_templ->NewInstance(); - - SWIG_PRV_DATA* cdata = (SWIG_PRV_DATA*) new SWIG_PRV_DATA; - cdata->swigCObject = ptr; - cdata->swigCMemOwn = (flags & SWIG_POINTER_OWN) ? 1 : 0; - cdata->info = info; - - result->SetInternalField(0, v8::External::New(cdata)); + SWIG_V8_SetPrivateData(result, ptr, info, flags); + return scope.Close(result); }