FS-11047: [build] support v8 6.6 fixes from Andrey Volk
This commit is contained in:
parent
b8b4517843
commit
bf59e825bd
|
@ -127,7 +127,7 @@
|
|||
|
||||
/* 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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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")) {
|
||||
|
|
|
@ -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];
|
||||
|
||||
|
|
|
@ -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")) {
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue