819d24
From f08d7a63a92a3ba89d97bdfcc206e1e1c4804c0f Mon Sep 17 00:00:00 2001
819d24
From: Patrick Schneider <patrick.schneider@meetnow.eu>
819d24
Date: Thu, 13 Apr 2017 15:02:53 +0200
819d24
Subject: [PATCH 1/2] Add Node 7.x aka V8 5.2+ support
819d24
819d24
* Use WeakCallbackInfo instead of WeakCallbackData
819d24
* Use GetPrivate instead of GetHiddenValue
819d24
* Adopted new signature for SetWeak to support destructor calling
819d24
* SetAccessor deprecation fixed
819d24
* Proper version checks where applicable
819d24
---
819d24
 Lib/javascript/v8/javascriptcode.swg    | 27 +++++++++++++++++-----
819d24
 Lib/javascript/v8/javascripthelpers.swg | 29 +++++++++++++++++++++---
819d24
 Lib/javascript/v8/javascriptinit.swg    | 16 +++++++++++--
819d24
 Lib/javascript/v8/javascriptrun.swg     | 40 ++++++++++++++++++++++++++++-----
819d24
 4 files changed, 95 insertions(+), 17 deletions(-)
819d24
819d24
diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg
819d24
index fb7d55c2ad..b8c5089816 100644
819d24
--- a/Lib/javascript/v8/javascriptcode.swg
819d24
+++ b/Lib/javascript/v8/javascriptcode.swg
819d24
@@ -133,10 +133,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Value> object, v
819d24
   SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
 static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Object> *object, SWIGV8_Proxy *proxy) {
819d24
-#else
819d24
+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
 static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) {
819d24
   v8::Local<v8::Object> object = data.GetValue();
819d24
   SWIGV8_Proxy *proxy = data.GetParameter();
819d24
+#else
819d24
+  static void $jswrapper(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) {
819d24
+  SWIGV8_Proxy *proxy = data.GetParameter();
819d24
 #endif
819d24
 
819d24
   if(proxy->swigCMemOwn && proxy->swigCObject) {
819d24
@@ -147,7 +150,9 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat
819d24
   }
819d24
   delete proxy;
819d24
 
819d24
+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
   object.Clear();
819d24
+#endif
819d24
   
819d24
 #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710)
819d24
   object.Dispose();
819d24
@@ -155,7 +160,7 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat
819d24
   object.Dispose(isolate);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100)
819d24
   object->Dispose(isolate);
819d24
-#else
819d24
+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
   object->Dispose();
819d24
 #endif
819d24
 }
819d24
@@ -177,10 +182,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Value> object, v
819d24
   SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
 static void $jswrapper(v8::Isolate *isolate, v8::Persistent< v8::Object> *object, SWIGV8_Proxy *proxy) {
819d24
-#else
819d24
+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
 static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) {
819d24
   v8::Local<v8::Object> object = data.GetValue();
819d24
   SWIGV8_Proxy *proxy = data.GetParameter();
819d24
+#else
819d24
+static void $jswrapper(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) {
819d24
+  SWIGV8_Proxy *proxy = data.GetParameter();
819d24
 #endif
819d24
 
819d24
   if(proxy->swigCMemOwn && proxy->swigCObject) {
819d24
@@ -197,7 +205,7 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat
819d24
   object->Dispose(isolate);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
   object->Dispose();
819d24
-#else
819d24
+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
   object.Clear();
819d24
 #endif
819d24
 }
819d24
@@ -211,7 +219,11 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat
819d24
  * ----------------------------------------------------------------------------- */
819d24
 %fragment("js_getter", "templates")
819d24
 %{
819d24
+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
 static SwigV8ReturnValue $jswrapper(v8::Local<v8::String> property, const SwigV8PropertyCallbackInfo &info) {
819d24
+#else
819d24
+static SwigV8ReturnValue $jswrapper(v8::Local<v8::Name> property, const SwigV8PropertyCallbackInfo &info) {
819d24
+#endif
819d24
   SWIGV8_HANDLESCOPE();
819d24
   
819d24
   v8::Handle<v8::Value> jsresult;
819d24
@@ -233,8 +245,11 @@ fail:
819d24
  * ----------------------------------------------------------------------------- */
819d24
 %fragment("js_setter", "templates")
819d24
 %{
819d24
-static void $jswrapper(v8::Local<v8::String> property, v8::Local<v8::Value> value,
819d24
-  const SwigV8PropertyCallbackInfoVoid &info) {
819d24
+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+static void $jswrapper(v8::Local<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid &info) {
819d24
+#else
819d24
+static void $jswrapper(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid &info) {
819d24
+#endif
819d24
   SWIGV8_HANDLESCOPE();
819d24
   
819d24
   $jslocals
819d24
diff --git a/Lib/javascript/v8/javascripthelpers.swg b/Lib/javascript/v8/javascripthelpers.swg
819d24
index 091467df4d..74610793af 100644
819d24
--- a/Lib/javascript/v8/javascripthelpers.swg
819d24
+++ b/Lib/javascript/v8/javascripthelpers.swg
819d24
@@ -6,11 +6,16 @@ typedef v8::InvocationCallback  SwigV8FunctionCallback;
819d24
 typedef v8::AccessorGetter      SwigV8AccessorGetterCallback;
819d24
 typedef v8::AccessorSetter      SwigV8AccessorSetterCallback;
819d24
 typedef v8::AccessorInfo        SwigV8PropertyCallbackInfoVoid;
819d24
-#else
819d24
+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
 typedef v8::FunctionCallback            SwigV8FunctionCallback;
819d24
 typedef v8::AccessorGetterCallback      SwigV8AccessorGetterCallback;
819d24
 typedef v8::AccessorSetterCallback      SwigV8AccessorSetterCallback;
819d24
 typedef v8::PropertyCallbackInfo<void>  SwigV8PropertyCallbackInfoVoid;
819d24
+#else
819d24
+typedef v8::FunctionCallback            SwigV8FunctionCallback;
819d24
+typedef v8::AccessorNameGetterCallback  SwigV8AccessorGetterCallback;
819d24
+typedef v8::AccessorNameSetterCallback  SwigV8AccessorSetterCallback;
819d24
+typedef v8::PropertyCallbackInfo<void>  SwigV8PropertyCallbackInfoVoid;
819d24
 #endif
819d24
 
819d24
 /**
819d24
@@ -65,18 +70,36 @@ SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle<v8::Object> obj, const char
819d24
  */
819d24
 SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle<v8::Object> obj, const char* symbol,
819d24
   SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) {
819d24
+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
   obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter);
819d24
+#else
819d24
+  obj->SetAccessor(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW(symbol), getter, setter);
819d24
+#endif
819d24
 }
819d24
 
819d24
-SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::String> property, v8::Local<v8::Value> value,
819d24
-  const SwigV8PropertyCallbackInfoVoid& info)
819d24
+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info)
819d24
+#else
819d24
+SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info)
819d24
+#endif
819d24
 {
819d24
     char buffer[256];
819d24
     char msg[512];
819d24
     int res;
819d24
 
819d24
+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
     property->WriteUtf8(buffer, 256);
819d24
     res = sprintf(msg, "Tried to write read-only variable: %s.", buffer);
819d24
+#else
819d24
+    v8::Local<v8::String> sproperty;
819d24
+    if (property->ToString(SWIGV8_CURRENT_CONTEXT()).ToLocal(&sproperty)) {
819d24
+      sproperty->WriteUtf8(buffer, 256);
819d24
+      res = sprintf(msg, "Tried to write read-only variable: %s.", buffer);
819d24
+    }
819d24
+    else {
819d24
+      res = -1;
819d24
+    }
819d24
+#endif
819d24
 
819d24
     if(res<0) {
819d24
       SWIG_exception(SWIG_ERROR, "Tried to write read-only variable.");
819d24
diff --git a/Lib/javascript/v8/javascriptinit.swg b/Lib/javascript/v8/javascriptinit.swg
819d24
index 34befa7ce7..86008d927f 100644
819d24
--- a/Lib/javascript/v8/javascriptinit.swg
819d24
+++ b/Lib/javascript/v8/javascriptinit.swg
819d24
@@ -7,15 +7,27 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) {
819d24
   v8::Local<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global();
819d24
   v8::Local<v8::External> mod = SWIGV8_EXTERNAL_NEW(swig_module);
819d24
   assert(!mod.IsEmpty());
819d24
+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
   global_obj->SetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"), mod);
819d24
+#else
819d24
+  v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data"));
819d24
+  global_obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, mod);
819d24
+#endif
819d24
 }
819d24
 
819d24
 SWIGRUNTIME swig_module_info *
819d24
 SWIG_V8_GetModule(void *) {
819d24
   v8::Local<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global();
819d24
+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
   v8::Local<v8::Value> moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"));
819d24
+#else
819d24
+  v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data"));
819d24
+  v8::Local<v8::Value> moduleinfo;
819d24
+  if (!global_obj->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&moduleinfo))
819d24
+    return 0;
819d24
+#endif
819d24
 
819d24
-  if (moduleinfo.IsEmpty())
819d24
+  if (moduleinfo.IsEmpty() || moduleinfo->IsNull() || moduleinfo->IsUndefined())
819d24
   {
819d24
     // It's not yet loaded
819d24
     return 0;
819d24
@@ -23,7 +35,7 @@ SWIG_V8_GetModule(void *) {
819d24
 
819d24
   v8::Local<v8::External> moduleinfo_extern = v8::Local<v8::External>::Cast(moduleinfo);
819d24
 
819d24
-  if (moduleinfo_extern.IsEmpty())
819d24
+  if (moduleinfo_extern.IsEmpty() || moduleinfo_extern->IsNull() || moduleinfo_extern->IsUndefined())
819d24
   {
819d24
     // Something's not right
819d24
     return 0;
819d24
diff --git a/Lib/javascript/v8/javascriptrun.swg b/Lib/javascript/v8/javascriptrun.swg
819d24
index 5ac52a51dc..30002c02a3 100644
819d24
--- a/Lib/javascript/v8/javascriptrun.swg
819d24
+++ b/Lib/javascript/v8/javascriptrun.swg
819d24
@@ -193,8 +193,10 @@ public:
819d24
   void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Value> object, void *parameter);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
   void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy);
819d24
-#else
819d24
+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
   void (*dtor) (const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data);
819d24
+#else
819d24
+  void (*dtor) (const v8::WeakCallbackInfo<SWIGV8_Proxy> &data);
819d24
 #endif
819d24
 };
819d24
 
819d24
@@ -241,9 +243,12 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Val
819d24
   SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
 SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy) {
819d24
-#else
819d24
+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
 SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) {
819d24
   SWIGV8_Proxy *proxy = data.GetParameter();
819d24
+#else
819d24
+SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) {
819d24
+  SWIGV8_Proxy *proxy = data.GetParameter();
819d24
 #endif
819d24
 
819d24
   delete proxy;
819d24
@@ -312,12 +317,18 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle<v8::Object> obj, void *ptr, sw
819d24
   } else {
819d24
     cdata->handle.MakeWeak(cdata, SWIGV8_Proxy_DefaultDtor);
819d24
   }
819d24
-#else
819d24
+#elifif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
   if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) {
819d24
     cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor);
819d24
   } else {
819d24
     cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor);
819d24
   }
819d24
+#else
819d24
+  if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) {
819d24
+    cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor, v8::WeakCallbackType::kParameter);
819d24
+  } else {
819d24
+    cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor, v8::WeakCallbackType::kParameter);
819d24
+  }
819d24
 #endif
819d24
 
819d24
 #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710)
819d24
@@ -470,7 +481,14 @@ int SwigV8Packed_Check(v8::Handle<v8::Value> valRef) {
819d24
   
819d24
   v8::Handle<v8::Object> objRef = valRef->ToObject();
819d24
   if(objRef->InternalFieldCount() < 1) return false;
819d24
+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
   v8::Handle<v8::Value> flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"));
819d24
+#else
819d24
+  v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__"));
819d24
+  v8::Local<v8::Value> flag;
819d24
+  if (!objRef->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&flag))
819d24
+    return false;
819d24
+#endif
819d24
   return (flag->IsBoolean() && flag->BooleanValue());
819d24
 }
819d24
 
819d24
@@ -519,10 +537,13 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persist
819d24
   SwigV8PackedData *cdata = static_cast<SwigV8PackedData *>(parameter);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
 SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent<v8::Object> *object, SwigV8PackedData *cdata) {
819d24
-#else
819d24
+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
 SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData<v8::Object, SwigV8PackedData> &data) {
819d24
   v8::Local<v8::Object> object = data.GetValue();
819d24
   SwigV8PackedData *cdata = data.GetParameter();
819d24
+#else
819d24
+SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo<SwigV8PackedData> &data) {
819d24
+  SwigV8PackedData *cdata = data.GetParameter();
819d24
 #endif
819d24
 
819d24
   delete cdata;
819d24
@@ -537,7 +558,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData
819d24
   object->Dispose(isolate);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
   object->Dispose();
819d24
-#else
819d24
+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
   object.Clear();
819d24
 #endif
819d24
 }
819d24
@@ -550,7 +571,12 @@ v8::Handle<v8::Value> SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf
819d24
 //  v8::Handle<v8::Object> obj = SWIGV8_OBJECT_NEW();
819d24
   v8::Local<v8::Object> obj = SWIGV8_OBJECT_NEW();
819d24
 
819d24
+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
   obj->SetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"), SWIGV8_BOOLEAN_NEW(true));
819d24
+#else
819d24
+  v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__"));
819d24
+  obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, SWIGV8_BOOLEAN_NEW(true));
819d24
+#endif
819d24
 
819d24
 #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511)
819d24
   obj->SetPointerInInternalField(0, cdata);
819d24
@@ -573,9 +599,11 @@ v8::Handle<v8::Value> SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf
819d24
   cdata->handle.MakeWeak(v8::Isolate::GetCurrent(), cdata, _wrap_SwigV8PackedData_delete);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
   cdata->handle.MakeWeak(cdata, _wrap_SwigV8PackedData_delete);
819d24
-#else
819d24
+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
   cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete);
819d24
 //  v8::V8::SetWeak(&cdata->handle, cdata, _wrap_SwigV8PackedData_delete);
819d24
+#else
819d24
+  cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete, v8::WeakCallbackType::kParameter);
819d24
 #endif
819d24
 
819d24
 #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710)
819d24
819d24
From 9ce8d7e7c99e75163318428aeff6e60d398fcdca Mon Sep 17 00:00:00 2001
819d24
From: Patrick Schneider <patrick.schneider@meetnow.eu>
819d24
Date: Thu, 13 Apr 2017 19:39:44 +0200
819d24
Subject: [PATCH 2/2] Remove warnings on Node 6.x aka V8 5.0 and 5.1
819d24
819d24
The proposed changes targetted at 5.2 (or 5.4 to be more precise, since there is no Node release with V8 5.2 or 5.3) work for lower versions as well and bust the deprecation warnings there.
819d24
---
819d24
 Lib/javascript/v8/javascriptcode.swg    | 14 +++++++-------
819d24
 Lib/javascript/v8/javascripthelpers.swg |  8 ++++----
819d24
 Lib/javascript/v8/javascriptinit.swg    |  4 ++--
819d24
 Lib/javascript/v8/javascriptrun.swg     | 16 ++++++++--------
819d24
 4 files changed, 21 insertions(+), 21 deletions(-)
819d24
819d24
diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg
819d24
index b8c5089816..c4aaf3db0c 100644
819d24
--- a/Lib/javascript/v8/javascriptcode.swg
819d24
+++ b/Lib/javascript/v8/javascriptcode.swg
819d24
@@ -133,7 +133,7 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Value> object, v
819d24
   SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
 static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Object> *object, SWIGV8_Proxy *proxy) {
819d24
-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#elif (V8_MAJOR_VERSION-0) < 5
819d24
 static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) {
819d24
   v8::Local<v8::Object> object = data.GetValue();
819d24
   SWIGV8_Proxy *proxy = data.GetParameter();
819d24
@@ -150,7 +150,7 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat
819d24
   }
819d24
   delete proxy;
819d24
 
819d24
-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#if (V8_MAJOR_VERSION-0) < 5
819d24
   object.Clear();
819d24
 #endif
819d24
   
819d24
@@ -160,7 +160,7 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat
819d24
   object.Dispose(isolate);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100)
819d24
   object->Dispose(isolate);
819d24
-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#elif (V8_MAJOR_VERSION-0) < 5
819d24
   object->Dispose();
819d24
 #endif
819d24
 }
819d24
@@ -182,7 +182,7 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Value> object, v
819d24
   SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
 static void $jswrapper(v8::Isolate *isolate, v8::Persistent< v8::Object> *object, SWIGV8_Proxy *proxy) {
819d24
-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#elif (V8_MAJOR_VERSION-0) < 5
819d24
 static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) {
819d24
   v8::Local<v8::Object> object = data.GetValue();
819d24
   SWIGV8_Proxy *proxy = data.GetParameter();
819d24
@@ -205,7 +205,7 @@ static void $jswrapper(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) {
819d24
   object->Dispose(isolate);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
   object->Dispose();
819d24
-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#elif (V8_MAJOR_VERSION-0) < 5
819d24
   object.Clear();
819d24
 #endif
819d24
 }
819d24
@@ -219,7 +219,7 @@ static void $jswrapper(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) {
819d24
  * ----------------------------------------------------------------------------- */
819d24
 %fragment("js_getter", "templates")
819d24
 %{
819d24
-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#if (V8_MAJOR_VERSION-0) < 5
819d24
 static SwigV8ReturnValue $jswrapper(v8::Local<v8::String> property, const SwigV8PropertyCallbackInfo &info) {
819d24
 #else
819d24
 static SwigV8ReturnValue $jswrapper(v8::Local<v8::Name> property, const SwigV8PropertyCallbackInfo &info) {
819d24
@@ -245,7 +245,7 @@ fail:
819d24
  * ----------------------------------------------------------------------------- */
819d24
 %fragment("js_setter", "templates")
819d24
 %{
819d24
-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#if (V8_MAJOR_VERSION-0) < 5
819d24
 static void $jswrapper(v8::Local<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid &info) {
819d24
 #else
819d24
 static void $jswrapper(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid &info) {
819d24
diff --git a/Lib/javascript/v8/javascripthelpers.swg b/Lib/javascript/v8/javascripthelpers.swg
819d24
index 74610793af..7b8a5ec237 100644
819d24
--- a/Lib/javascript/v8/javascripthelpers.swg
819d24
+++ b/Lib/javascript/v8/javascripthelpers.swg
819d24
@@ -6,7 +6,7 @@ typedef v8::InvocationCallback  SwigV8FunctionCallback;
819d24
 typedef v8::AccessorGetter      SwigV8AccessorGetterCallback;
819d24
 typedef v8::AccessorSetter      SwigV8AccessorSetterCallback;
819d24
 typedef v8::AccessorInfo        SwigV8PropertyCallbackInfoVoid;
819d24
-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#elif (V8_MAJOR_VERSION-0) < 5
819d24
 typedef v8::FunctionCallback            SwigV8FunctionCallback;
819d24
 typedef v8::AccessorGetterCallback      SwigV8AccessorGetterCallback;
819d24
 typedef v8::AccessorSetterCallback      SwigV8AccessorSetterCallback;
819d24
@@ -70,14 +70,14 @@ SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle<v8::Object> obj, const char
819d24
  */
819d24
 SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle<v8::Object> obj, const char* symbol,
819d24
   SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) {
819d24
-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#if (V8_MAJOR_VERSION-0) < 5
819d24
   obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter);
819d24
 #else
819d24
   obj->SetAccessor(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW(symbol), getter, setter);
819d24
 #endif
819d24
 }
819d24
 
819d24
-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#if (V8_MAJOR_VERSION-0) < 5
819d24
 SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info)
819d24
 #else
819d24
 SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info)
819d24
@@ -87,7 +87,7 @@ SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::Name> property, v8::Local
819d24
     char msg[512];
819d24
     int res;
819d24
 
819d24
-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#if (V8_MAJOR_VERSION-0) < 5
819d24
     property->WriteUtf8(buffer, 256);
819d24
     res = sprintf(msg, "Tried to write read-only variable: %s.", buffer);
819d24
 #else
819d24
diff --git a/Lib/javascript/v8/javascriptinit.swg b/Lib/javascript/v8/javascriptinit.swg
819d24
index 86008d927f..e83f478d9d 100644
819d24
--- a/Lib/javascript/v8/javascriptinit.swg
819d24
+++ b/Lib/javascript/v8/javascriptinit.swg
819d24
@@ -7,7 +7,7 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) {
819d24
   v8::Local<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global();
819d24
   v8::Local<v8::External> mod = SWIGV8_EXTERNAL_NEW(swig_module);
819d24
   assert(!mod.IsEmpty());
819d24
-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#if (V8_MAJOR_VERSION-0) < 5
819d24
   global_obj->SetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"), mod);
819d24
 #else
819d24
   v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data"));
819d24
@@ -18,7 +18,7 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) {
819d24
 SWIGRUNTIME swig_module_info *
819d24
 SWIG_V8_GetModule(void *) {
819d24
   v8::Local<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global();
819d24
-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#if (V8_MAJOR_VERSION-0) < 5
819d24
   v8::Local<v8::Value> moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"));
819d24
 #else
819d24
   v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data"));
819d24
diff --git a/Lib/javascript/v8/javascriptrun.swg b/Lib/javascript/v8/javascriptrun.swg
819d24
index 30002c02a3..0af9f4eb0a 100644
819d24
--- a/Lib/javascript/v8/javascriptrun.swg
819d24
+++ b/Lib/javascript/v8/javascriptrun.swg
819d24
@@ -193,7 +193,7 @@ public:
819d24
   void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Value> object, void *parameter);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
   void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy);
819d24
-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#elif (V8_MAJOR_VERSION-0) < 5
819d24
   void (*dtor) (const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data);
819d24
 #else
819d24
   void (*dtor) (const v8::WeakCallbackInfo<SWIGV8_Proxy> &data);
819d24
@@ -243,7 +243,7 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Val
819d24
   SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
 SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy) {
819d24
-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#elif (V8_MAJOR_VERSION-0) < 5
819d24
 SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) {
819d24
   SWIGV8_Proxy *proxy = data.GetParameter();
819d24
 #else
819d24
@@ -317,7 +317,7 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle<v8::Object> obj, void *ptr, sw
819d24
   } else {
819d24
     cdata->handle.MakeWeak(cdata, SWIGV8_Proxy_DefaultDtor);
819d24
   }
819d24
-#elifif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#elif (V8_MAJOR_VERSION-0) < 5
819d24
   if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) {
819d24
     cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor);
819d24
   } else {
819d24
@@ -481,7 +481,7 @@ int SwigV8Packed_Check(v8::Handle<v8::Value> valRef) {
819d24
   
819d24
   v8::Handle<v8::Object> objRef = valRef->ToObject();
819d24
   if(objRef->InternalFieldCount() < 1) return false;
819d24
-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#if (V8_MAJOR_VERSION-0) < 5
819d24
   v8::Handle<v8::Value> flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"));
819d24
 #else
819d24
   v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__"));
819d24
@@ -537,7 +537,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persist
819d24
   SwigV8PackedData *cdata = static_cast<SwigV8PackedData *>(parameter);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
 SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent<v8::Object> *object, SwigV8PackedData *cdata) {
819d24
-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#elif (V8_MAJOR_VERSION-0) < 5
819d24
 SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData<v8::Object, SwigV8PackedData> &data) {
819d24
   v8::Local<v8::Object> object = data.GetValue();
819d24
   SwigV8PackedData *cdata = data.GetParameter();
819d24
@@ -558,7 +558,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo
819d24
   object->Dispose(isolate);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
   object->Dispose();
819d24
-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#elif (V8_MAJOR_VERSION-0) < 5
819d24
   object.Clear();
819d24
 #endif
819d24
 }
819d24
@@ -571,7 +571,7 @@ v8::Handle<v8::Value> SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf
819d24
 //  v8::Handle<v8::Object> obj = SWIGV8_OBJECT_NEW();
819d24
   v8::Local<v8::Object> obj = SWIGV8_OBJECT_NEW();
819d24
 
819d24
-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#if (V8_MAJOR_VERSION-0) < 5
819d24
   obj->SetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"), SWIGV8_BOOLEAN_NEW(true));
819d24
 #else
819d24
   v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__"));
819d24
@@ -599,7 +599,7 @@ v8::Handle<v8::Value> SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf
819d24
   cdata->handle.MakeWeak(v8::Isolate::GetCurrent(), cdata, _wrap_SwigV8PackedData_delete);
819d24
 #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
819d24
   cdata->handle.MakeWeak(cdata, _wrap_SwigV8PackedData_delete);
819d24
-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
819d24
+#elif (V8_MAJOR_VERSION-0) < 5
819d24
   cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete);
819d24
 //  v8::V8::SetWeak(&cdata->handle, cdata, _wrap_SwigV8PackedData_delete);
819d24
 #else