diff --git a/ext/mini_racer_extension/mini_racer_extension.cc b/ext/mini_racer_extension/mini_racer_extension.cc index 688bce0a..33da606b 100644 --- a/ext/mini_racer_extension/mini_racer_extension.cc +++ b/ext/mini_racer_extension/mini_racer_extension.cc @@ -152,7 +152,7 @@ static VALUE rb_mJSON; static VALUE rb_cFailedV8Conversion; static VALUE rb_cDateTime = Qnil; -static Platform* current_platform = NULL; +static std::unique_ptr current_platform = NULL; static std::mutex platform_lock; static VALUE rb_platform_set_flag_as_str(VALUE _klass, VALUE flag_as_str) { @@ -189,8 +189,8 @@ static void init_v8() { if (current_platform == NULL) { V8::InitializeICU(); - current_platform = platform::CreateDefaultPlatform(); - V8::InitializePlatform(current_platform); + current_platform = platform::NewDefaultPlatform(); + V8::InitializePlatform(current_platform.get()); V8::Initialize(); } @@ -241,7 +241,7 @@ static void prepare_result(MaybeLocal v8res, Local object = local_value->ToObject(context).ToLocalChecked(); const unsigned argc = 1; Local argv[argc] = { object }; - MaybeLocal json = stringify->Call(JSON, argc, argv); + MaybeLocal json = stringify->Call(context, JSON, argc, argv); if (json.IsEmpty()) { evalRes.executed = false; @@ -1086,8 +1086,10 @@ static VALUE rb_external_function_notify_v8(VALUE self) { Local context = context_info->context->Get(isolate); Context::Scope context_scope(context); - Local v8_str = String::NewFromUtf8(isolate, RSTRING_PTR(name), - NewStringType::kNormal, (int)RSTRING_LEN(name)).ToLocalChecked(); + Local v8_str = + String::NewFromUtf8(isolate, RSTRING_PTR(name), + NewStringType::kNormal, (int)RSTRING_LEN(name)) + .ToLocalChecked(); // copy self so we can access from v8 external VALUE* self_copy; @@ -1097,24 +1099,35 @@ static VALUE rb_external_function_notify_v8(VALUE self) { Local external = External::New(isolate, self_copy); if (parent_object == Qnil) { - context->Global()->Set(v8_str, FunctionTemplate::New(isolate, ruby_callback, external)->GetFunction()); - } else { + context->Global()->Set( + v8_str, FunctionTemplate::New(isolate, ruby_callback, external) + ->GetFunction(context) + .ToLocalChecked()); - Local eval = String::NewFromUtf8(isolate, RSTRING_PTR(parent_object_eval), - NewStringType::kNormal, (int)RSTRING_LEN(parent_object_eval)).ToLocalChecked(); + } else { + Local eval = + String::NewFromUtf8(isolate, RSTRING_PTR(parent_object_eval), + NewStringType::kNormal, + (int)RSTRING_LEN(parent_object_eval)) + .ToLocalChecked(); MaybeLocal