]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-11047: [build] support v8 6.6 fixes from Andrey Volk
authorMike Jerris <mike@jerris.com>
Thu, 3 May 2018 23:13:05 +0000 (19:13 -0400)
committerMuteesa Fred <muteesafred@hotmail.com>
Tue, 24 Jul 2018 07:21:52 +0000 (07:21 +0000)
src/mod/languages/mod_v8/include/javascript.hpp
src/mod/languages/mod_v8/mod_v8.cpp
src/mod/languages/mod_v8/src/fscoredb.cpp
src/mod/languages/mod_v8/src/fscurl.cpp
src/mod/languages/mod_v8/src/fsdbh.cpp
src/mod/languages/mod_v8/src/fsglobal.cpp
src/mod/languages/mod_v8/src/fssession.cpp
src/mod/languages/mod_v8/src/jsbase.cpp
src/mod/languages/mod_v8/src/jsmain.cpp

index 5650ad18e1a1c024f1f755bc03b2ec7c692c5be0..a080a508deeeb6ef42d47079ae1898582dec8906 100644 (file)
 
 /* Macro for basic script state check (to know if the script is being terminated), should be called before calling any callback actual code */
 #define JS_CHECK_SCRIPT_STATE() \
-       if (v8::V8::IsExecutionTerminating(info.GetIsolate())) return;\
+       if (info.GetIsolate()->IsExecutionTerminating()) return;\
        if (JSMain::GetScriptInstanceFromIsolate(info.GetIsolate()) && JSMain::GetScriptInstanceFromIsolate(info.GetIsolate())->GetForcedTermination()) return
 
 /* Macro for easy unlocking an isolate on a long running c call */
index 636b93e5aca0b77b41225a0970a938356237862b..8c0d6c0bef64f8dc10e194cd09af0cab185e1fe8 100644 (file)
@@ -645,7 +645,7 @@ static int v8_parse_and_execute(switch_core_session_t *session, const char *inpu
                        isolate->SetData(0, js);
 
                        // New global template
-                       Handle<ObjectTemplate> global = ObjectTemplate::New();
+                       Handle<ObjectTemplate> global = ObjectTemplate::New(isolate);
 
                        if (global.IsEmpty()) {
                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to create JS global object template\n");
@@ -793,7 +793,7 @@ static int v8_parse_and_execute(switch_core_session_t *session, const char *inpu
                                                        free(path);
                                                }
 
-                                               TryCatch try_catch;
+                                               TryCatch try_catch(isolate);
 
                                                // Compile the source code.
 #if defined(V8_MAJOR_VERSION) && V8_MAJOR_VERSION >=5
@@ -827,7 +827,7 @@ static int v8_parse_and_execute(switch_core_session_t *session, const char *inpu
                                                        switch_mutex_lock(globals.mutex);
                                                        if (globals.performance_monitor) {
                                                                switch_time_t end = switch_time_now();
-                                                               switch_time_t delay = (end - start);
+                                                               unsigned int delay = (end - start);
                                                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Javascript execution time: %u microseconds\n", delay);
                                                        }
                                                        switch_mutex_unlock(globals.mutex);
index b0b920df33e8d14ad499a36b56a5301644937998..5af1bd5be88b7e7ff43a4851f858abf8687d09a6 100644 (file)
@@ -396,11 +396,6 @@ JS_COREDB_GET_PROPERTY_IMPL(GetProperty)
 {
        HandleScope handle_scope(info.GetIsolate());
 
-       if (!this) {
-               info.GetReturnValue().Set(false);
-               return;
-       }
-
        String::Utf8Value str(property);
 
        if (!strcmp(js_safe_str(*str), "path")) {
index 60ad42f200d3fa1303f00d5a46052de890de03fd..e35036b64a5fceafc140e9298874c4154d22e127 100644 (file)
@@ -60,7 +60,7 @@ string FSCURL::GetJSClassName()
 size_t FSCURL::FileCallback(void *ptr, size_t size, size_t nmemb, void *data)
 {
        FSCURL *obj = static_cast<FSCURL *>(data);
-       register unsigned int realsize = (unsigned int) (size * nmemb);
+       unsigned int realsize = (unsigned int) (size * nmemb);
        uint32_t argc = 0;
        Handle<Value> argv[4];
 
index 59bd3b8128ddb48d8aea09fdbd388c80d9e58158..16f6b4f7b0f44e848190838e35e3583f8d135711 100644 (file)
@@ -335,11 +335,6 @@ JS_DBH_GET_PROPERTY_IMPL(GetProperty)
 {
        HandleScope handle_scope(info.GetIsolate());
 
-       if (!this) {
-               info.GetReturnValue().Set(false);
-               return;
-       }
-
        String::Utf8Value str(property);
 
        if (!strcmp(js_safe_str(*str), "dsn")) {
index 4bea1094fb2113e76d6e0dffb7331ddeba630599..89f94b40cb6f0b26deb0aad974baaea16afdc0b9 100644 (file)
@@ -63,7 +63,7 @@ public:
 
 size_t FSGlobal::HashCallback(void *ptr, size_t size, size_t nmemb, void *data)
 {
-       register size_t realsize = size * nmemb;
+       size_t realsize = size * nmemb;
        char *line, lineb[2048], *nextline = NULL, *val = NULL, *p = NULL;
        CURLCallbackData *config_data = (CURLCallbackData *)data;
 
@@ -112,7 +112,7 @@ size_t FSGlobal::HashCallback(void *ptr, size_t size, size_t nmemb, void *data)
 
 size_t FSGlobal::FileCallback(void *ptr, size_t size, size_t nmemb, void *data)
 {
-       register unsigned int realsize = (unsigned int) (size * nmemb);
+       unsigned int realsize = (unsigned int) (size * nmemb);
        CURLCallbackData *config_data = (CURLCallbackData *)data;
 
        if ((write(config_data->fileHandle, ptr, realsize) != (int) realsize)) {
@@ -124,7 +124,7 @@ size_t FSGlobal::FileCallback(void *ptr, size_t size, size_t nmemb, void *data)
 
 size_t FSGlobal::FetchUrlCallback(void *ptr, size_t size, size_t nmemb, void *data)
 {
-       register unsigned int realsize = (unsigned int) (size * nmemb);
+       unsigned int realsize = (unsigned int) (size * nmemb);
        CURLCallbackData *config_data = (CURLCallbackData *)data;
 
        /* Too much data. Do not increase buffer, but abort fetch instead. */
index 644576ecf9a0419c1b1b6159d139ce16100310d1..ca135206df37ebb053f93857a8643c3f3e90910e 100644 (file)
@@ -1221,28 +1221,28 @@ JS_SESSION_FUNCTION_IMPL(Ready)
 {
        HandleScope handle_scope(info.GetIsolate());
 
-       info.GetReturnValue().Set((this && this->_session && switch_channel_ready(switch_core_session_get_channel(this->_session))) ? true : false);
+       info.GetReturnValue().Set((this->_session && switch_channel_ready(switch_core_session_get_channel(this->_session))) ? true : false);
 }
 
 JS_SESSION_FUNCTION_IMPL(MediaReady)
 {
        HandleScope handle_scope(info.GetIsolate());
 
-       info.GetReturnValue().Set((this && this->_session && switch_channel_media_ready(switch_core_session_get_channel(this->_session))) ? true : false);
+       info.GetReturnValue().Set((this->_session && switch_channel_media_ready(switch_core_session_get_channel(this->_session))) ? true : false);
 }
 
 JS_SESSION_FUNCTION_IMPL(RingReady)
 {
        HandleScope handle_scope(info.GetIsolate());
 
-       info.GetReturnValue().Set((this && this->_session && switch_channel_test_flag(switch_core_session_get_channel(this->_session), CF_RING_READY)) ? true : false);
+       info.GetReturnValue().Set((this->_session && switch_channel_test_flag(switch_core_session_get_channel(this->_session), CF_RING_READY)) ? true : false);
 }
 
 JS_SESSION_FUNCTION_IMPL(Answered)
 {
        HandleScope handle_scope(info.GetIsolate());
 
-       info.GetReturnValue().Set((this && this->_session && switch_channel_test_flag(switch_core_session_get_channel(this->_session), CF_ANSWERED)) ? true : false);
+       info.GetReturnValue().Set((this->_session && switch_channel_test_flag(switch_core_session_get_channel(this->_session), CF_ANSWERED)) ? true : false);
 }
 
 JS_SESSION_FUNCTION_IMPL(WaitForMedia)
index 4fd320f4397af15263003347d35045c2e36e411c..f3cf8fd57a4e1f5ad1d231f2431442db067f473b 100644 (file)
@@ -154,15 +154,7 @@ void JSBase::CreateInstance(const v8::FunctionCallbackInfo<Value>& args)
        } else {
                // Create a new C++ instance
 #if defined(V8_MAJOR_VERSION) && V8_MAJOR_VERSION >=5
-               Isolate *isolate = args.GetIsolate();
-               v8::Local<v8::Context> context = isolate->GetCurrentContext();
-               v8::Local<v8::String> key = String::NewFromUtf8(isolate, "constructor_method");
-               v8::Local<v8::Private> privateKey = v8::Private::ForApi(isolate, key);
-               Handle<External> ex;
-               v8::MaybeLocal<v8::Value> hiddenValue = args.Callee()->GetPrivate(context, privateKey);
-               if (!hiddenValue.IsEmpty()) {
-                       ex = Handle<External>::Cast(hiddenValue.ToLocalChecked());
-               }
+               Handle<External> ex = Handle<External>::Cast(args.Data());
 #else
                Handle<External> ex = Handle<External>::Cast(args.Callee()->GetHiddenValue(String::NewFromUtf8(args.GetIsolate(), "constructor_method")));
 #endif
@@ -197,8 +189,10 @@ void JSBase::Register(Isolate *isolate, const js_class_definition_t *desc)
        // Get the context's global scope (that's where we'll put the constructor)
        Handle<Object> global = isolate->GetCurrentContext()->Global();
 
+       Local<External> data = External::New(isolate, (void *)desc->constructor);
+
        // Create function template for our constructor it will call the JSBase::createInstance method
-       Handle<FunctionTemplate> function = FunctionTemplate::New(isolate, JSBase::CreateInstance);
+       Handle<FunctionTemplate> function = FunctionTemplate::New(isolate, JSBase::CreateInstance, data);       
        function->SetClassName(String::NewFromUtf8(isolate, desc->name));
 
        // Make room for saving the C++ object reference somewhere
@@ -217,10 +211,6 @@ void JSBase::Register(Isolate *isolate, const js_class_definition_t *desc)
        }
 
 #if defined(V8_MAJOR_VERSION) && V8_MAJOR_VERSION >=5
-       v8::Local<v8::Context> context = isolate->GetCurrentContext();
-       v8::Local<v8::String> key = String::NewFromUtf8(isolate, "constructor_method");
-       v8::Local<v8::Private> privateKey = v8::Private::ForApi(isolate, key);
-       function->GetFunction()->SetPrivate(context, privateKey, External::New(isolate, (void *)desc->constructor));
 #else
        function->GetFunction()->SetHiddenValue(String::NewFromUtf8(isolate, "constructor_method"), External::New(isolate, (void *)desc->constructor));
 #endif
@@ -232,13 +222,14 @@ void JSBase::Register(Isolate *isolate, const js_class_definition_t *desc)
 void JSBase::RegisterInstance(Isolate *isolate, string name, bool autoDestroy)
 {
        // Get the context's global scope (that's where we'll put the constructor)
-       Handle<Object> global = isolate->GetCurrentContext()->Global();
+       Local<Context> context = isolate->GetCurrentContext();
+       Handle<Object> global = context->Global();
 
        Local<Function> func = Local<Function>::Cast(global->Get(v8::String::NewFromUtf8(isolate, this->GetJSClassName().c_str())));
 
        // Add the C++ instance as an argument, so it won't try to create another one.
        Handle<Value> args[] = { External::New(isolate, this), Boolean::New(isolate, autoDestroy) };
-       Handle<Object> newObj = func->NewInstance(2, args);
+       Handle<Object> newObj = func->NewInstance(context, 2, args).ToLocalChecked();
 
        // Add the instance to JavaScript.
        if (name.size() > 0) {
index e162460df2c630db72b38d0b9e65f1dc29f2c5a2..86fed7b27f3cce377cf14ca4104714bc494a9a75 100644 (file)
@@ -209,7 +209,7 @@ const string JSMain::GetExceptionInfo(Isolate* isolate, TryCatch* try_catch)
                        ss << " ";
                }
 
-               int end = message->GetEndColumn();
+               int32_t end = message->GetEndColumn(isolate->GetCurrentContext()).FromMaybe(0);
 
                for (int i = start; i < end; i++) {
                        ss << "^";
@@ -292,7 +292,7 @@ const string JSMain::ExecuteString(const string& scriptData, const string& fileN
 
                        isolate->SetData(0, this);
 
-                       Handle<ObjectTemplate> global = ObjectTemplate::New();
+                       Handle<ObjectTemplate> global = ObjectTemplate::New(isolate);
                        global->Set(String::NewFromUtf8(isolate, "include"), FunctionTemplate::New(isolate, Include));
                        global->Set(String::NewFromUtf8(isolate, "require"), FunctionTemplate::New(isolate, Include));
                        global->Set(String::NewFromUtf8(isolate, "log"), FunctionTemplate::New(isolate, Log));
@@ -323,7 +323,7 @@ const string JSMain::ExecuteString(const string& scriptData, const string& fileN
                                inst->obj->RegisterInstance(isolate, inst->name, inst->auto_destroy);
                        }
 
-                       TryCatch try_catch;
+                       TryCatch try_catch(isolate);
 
                        // Compile the source code.
 #if defined(V8_MAJOR_VERSION) && V8_MAJOR_VERSION >=5
@@ -583,7 +583,7 @@ void JSMain::ExitScript(Isolate *isolate, const char *msg)
                js->forcedTerminationScriptFile = GetStackInfo(isolate, &js->forcedTerminationLineNumber);
        }
 
-       V8::TerminateExecution(isolate);
+       isolate->TerminateExecution();
 }
 
 char *JSMain::GetStackInfo(Isolate *isolate, int *lineNumber)