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