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