From 389ee8d59bfb79a30384afb94360535bbb131d3e Mon Sep 17 00:00:00 2001 From: "svenpanne@chromium.org" Date: Wed, 18 Dec 2013 10:31:42 +0000 Subject: [PATCH] Removed internal uses of (almost) deprecated FunctionTemplate::New version. LOG=y R=dcarney@chromium.org Review URL: https://codereview.chromium.org/108063003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18342 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- samples/lineprocessor.cc | 4 +- samples/process.cc | 2 +- samples/shell.cc | 10 +- src/api.cc | 28 +- src/d8-posix.cc | 14 +- src/d8.cc | 32 +- src/extensions/externalize-string-extension.cc | 6 +- src/extensions/free-buffer-extension.cc | 2 +- src/extensions/gc-extension.cc | 2 +- src/extensions/statistics-extension.cc | 2 +- src/extensions/trigger-failure-extension.cc | 3 + test/cctest/test-accessors.cc | 25 +- test/cctest/test-api.cc | 775 ++++++++++++++----------- test/cctest/test-assembler-ia32.cc | 3 +- test/cctest/test-assembler-x64.cc | 3 +- test/cctest/test-compiler.cc | 2 +- test/cctest/test-cpu-profiler.cc | 110 ++-- test/cctest/test-debug.cc | 74 +-- test/cctest/test-declarative-accessors.cc | 3 +- test/cctest/test-decls.cc | 4 +- test/cctest/test-heap-profiler.cc | 1 + test/cctest/test-log-stack-tracer.cc | 10 +- test/cctest/test-log.cc | 15 +- test/cctest/test-object-observe.cc | 2 +- test/cctest/test-platform.cc | 2 +- test/cctest/test-thread-termination.cc | 44 +- 26 files changed, 667 insertions(+), 511 deletions(-) diff --git a/samples/lineprocessor.cc b/samples/lineprocessor.cc index 925e148..4823a48 100644 --- a/samples/lineprocessor.cc +++ b/samples/lineprocessor.cc @@ -204,12 +204,12 @@ int RunMain(int argc, char* argv[]) { // Bind the global 'print' function to the C++ Print callback. global->Set(v8::String::NewFromUtf8(isolate, "print"), - v8::FunctionTemplate::New(Print)); + v8::FunctionTemplate::New(isolate, Print)); if (cycle_type == CycleInJs) { // Bind the global 'read_line' function to the C++ Print callback. global->Set(v8::String::NewFromUtf8(isolate, "read_line"), - v8::FunctionTemplate::New(ReadLine)); + v8::FunctionTemplate::New(isolate, ReadLine)); } // Create a new execution environment containing the built-in diff --git a/samples/process.cc b/samples/process.cc index 7e3f78f..48ad33f 100644 --- a/samples/process.cc +++ b/samples/process.cc @@ -162,7 +162,7 @@ bool JsHttpRequestProcessor::Initialize(map* opts, // built-in global functions. Handle global = ObjectTemplate::New(); global->Set(String::NewFromUtf8(GetIsolate(), "log"), - FunctionTemplate::New(LogCallback)); + FunctionTemplate::New(GetIsolate(), LogCallback)); // Each processor gets its own context so different processors don't // affect each other. Context::New returns a persistent handle which diff --git a/samples/shell.cc b/samples/shell.cc index f651850..e98eb75 100644 --- a/samples/shell.cc +++ b/samples/shell.cc @@ -101,19 +101,19 @@ v8::Handle CreateShellContext(v8::Isolate* isolate) { v8::Handle global = v8::ObjectTemplate::New(); // Bind the global 'print' function to the C++ Print callback. global->Set(v8::String::NewFromUtf8(isolate, "print"), - v8::FunctionTemplate::New(Print)); + v8::FunctionTemplate::New(isolate, Print)); // Bind the global 'read' function to the C++ Read callback. global->Set(v8::String::NewFromUtf8(isolate, "read"), - v8::FunctionTemplate::New(Read)); + v8::FunctionTemplate::New(isolate, Read)); // Bind the global 'load' function to the C++ Load callback. global->Set(v8::String::NewFromUtf8(isolate, "load"), - v8::FunctionTemplate::New(Load)); + v8::FunctionTemplate::New(isolate, Load)); // Bind the 'quit' function global->Set(v8::String::NewFromUtf8(isolate, "quit"), - v8::FunctionTemplate::New(Quit)); + v8::FunctionTemplate::New(isolate, Quit)); // Bind the 'version' function global->Set(v8::String::NewFromUtf8(isolate, "version"), - v8::FunctionTemplate::New(Version)); + v8::FunctionTemplate::New(isolate, Version)); return v8::Context::New(isolate, NULL, global); } diff --git a/src/api.cc b/src/api.cc index c470f84..9a68f63 100644 --- a/src/api.cc +++ b/src/api.cc @@ -1368,13 +1368,15 @@ Local ObjectTemplate::New( // Ensure that the object template has a constructor. If no // constructor is available we create one. static i::Handle EnsureConstructor( + i::Isolate* isolate, ObjectTemplate* object_template) { i::Object* obj = Utils::OpenHandle(object_template)->constructor(); if (!obj ->IsUndefined()) { i::FunctionTemplateInfo* info = i::FunctionTemplateInfo::cast(obj); - return i::Handle(info, info->GetIsolate()); + return i::Handle(info, isolate); } - Local templ = FunctionTemplate::New(); + Local templ = + FunctionTemplate::New(reinterpret_cast(isolate)); i::Handle constructor = Utils::OpenHandle(*templ); constructor->set_instance_template(*Utils::OpenHandle(object_template)); Utils::OpenHandle(object_template)->set_constructor(*constructor); @@ -1396,6 +1398,7 @@ static inline void AddPropertyToTemplate( static inline i::Handle GetTemplateInfo( + i::Isolate* isolate, Template* template_obj) { return Utils::OpenHandle(template_obj); } @@ -1403,8 +1406,9 @@ static inline i::Handle GetTemplateInfo( // TODO(dcarney): remove this with ObjectTemplate::SetAccessor static inline i::Handle GetTemplateInfo( + i::Isolate* isolate, ObjectTemplate* object_template) { - EnsureConstructor(object_template); + EnsureConstructor(isolate, object_template); return Utils::OpenHandle(object_template); } @@ -1425,7 +1429,7 @@ static bool TemplateSetAccessor( i::Handle obj = MakeAccessorInfo( name, getter, setter, data, settings, attribute, signature); if (obj.is_null()) return false; - i::Handle info = GetTemplateInfo(template_obj); + i::Handle info = GetTemplateInfo(isolate, template_obj); AddPropertyToTemplate(info, obj); return true; } @@ -1477,7 +1481,7 @@ void ObjectTemplate::SetNamedPropertyHandler( i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); ENTER_V8(isolate); i::HandleScope scope(isolate); - EnsureConstructor(this); + EnsureConstructor(isolate, this); i::FunctionTemplateInfo* constructor = i::FunctionTemplateInfo::cast( Utils::OpenHandle(this)->constructor()); i::Handle cons(constructor); @@ -1504,7 +1508,7 @@ void ObjectTemplate::MarkAsUndetectable() { i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); ENTER_V8(isolate); i::HandleScope scope(isolate); - EnsureConstructor(this); + EnsureConstructor(isolate, this); i::FunctionTemplateInfo* constructor = i::FunctionTemplateInfo::cast(Utils::OpenHandle(this)->constructor()); i::Handle cons(constructor); @@ -1520,7 +1524,7 @@ void ObjectTemplate::SetAccessCheckCallbacks( i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); ENTER_V8(isolate); i::HandleScope scope(isolate); - EnsureConstructor(this); + EnsureConstructor(isolate, this); i::Handle struct_info = isolate->factory()->NewStruct(i::ACCESS_CHECK_INFO_TYPE); @@ -1553,7 +1557,7 @@ void ObjectTemplate::SetIndexedPropertyHandler( i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); ENTER_V8(isolate); i::HandleScope scope(isolate); - EnsureConstructor(this); + EnsureConstructor(isolate, this); i::FunctionTemplateInfo* constructor = i::FunctionTemplateInfo::cast( Utils::OpenHandle(this)->constructor()); i::Handle cons(constructor); @@ -1581,7 +1585,7 @@ void ObjectTemplate::SetCallAsFunctionHandler(FunctionCallback callback, i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); ENTER_V8(isolate); i::HandleScope scope(isolate); - EnsureConstructor(this); + EnsureConstructor(isolate, this); i::FunctionTemplateInfo* constructor = i::FunctionTemplateInfo::cast( Utils::OpenHandle(this)->constructor()); i::Handle cons(constructor); @@ -1615,7 +1619,7 @@ void ObjectTemplate::SetInternalFieldCount(int value) { // The internal field count is set by the constructor function's // construct code, so we ensure that there is a constructor // function to do the setting. - EnsureConstructor(this); + EnsureConstructor(isolate, this); } Utils::OpenHandle(this)->set_internal_field_count(i::Smi::FromInt(value)); } @@ -5140,11 +5144,11 @@ static i::Handle CreateEnvironment( if (!global_template.IsEmpty()) { // Make sure that the global_template has a constructor. - global_constructor = EnsureConstructor(*global_template); + global_constructor = EnsureConstructor(isolate, *global_template); // Create a fresh template for the global proxy object. proxy_template = ObjectTemplate::New(); - proxy_constructor = EnsureConstructor(*proxy_template); + proxy_constructor = EnsureConstructor(isolate, *proxy_template); // Set the global template to be the prototype template of // global proxy template. diff --git a/src/d8-posix.cc b/src/d8-posix.cc index 25f79a4..c0485c6 100644 --- a/src/d8-posix.cc +++ b/src/d8-posix.cc @@ -723,19 +723,19 @@ void Shell::UnsetEnvironment(const v8::FunctionCallbackInfo& args) { void Shell::AddOSMethods(Isolate* isolate, Handle os_templ) { os_templ->Set(String::NewFromUtf8(isolate, "system"), - FunctionTemplate::New(System)); + FunctionTemplate::New(isolate, System)); os_templ->Set(String::NewFromUtf8(isolate, "chdir"), - FunctionTemplate::New(ChangeDirectory)); + FunctionTemplate::New(isolate, ChangeDirectory)); os_templ->Set(String::NewFromUtf8(isolate, "setenv"), - FunctionTemplate::New(SetEnvironment)); + FunctionTemplate::New(isolate, SetEnvironment)); os_templ->Set(String::NewFromUtf8(isolate, "unsetenv"), - FunctionTemplate::New(UnsetEnvironment)); + FunctionTemplate::New(isolate, UnsetEnvironment)); os_templ->Set(String::NewFromUtf8(isolate, "umask"), - FunctionTemplate::New(SetUMask)); + FunctionTemplate::New(isolate, SetUMask)); os_templ->Set(String::NewFromUtf8(isolate, "mkdirp"), - FunctionTemplate::New(MakeDirectory)); + FunctionTemplate::New(isolate, MakeDirectory)); os_templ->Set(String::NewFromUtf8(isolate, "rmdir"), - FunctionTemplate::New(RemoveDirectory)); + FunctionTemplate::New(isolate, RemoveDirectory)); } } // namespace v8 diff --git a/src/d8.cc b/src/d8.cc index eb70f3e..00eca19 100644 --- a/src/d8.cc +++ b/src/d8.cc @@ -860,38 +860,38 @@ class BZip2Decompressor : public v8::StartupDataDecompressor { Handle Shell::CreateGlobalTemplate(Isolate* isolate) { Handle global_template = ObjectTemplate::New(); global_template->Set(String::NewFromUtf8(isolate, "print"), - FunctionTemplate::New(Print)); + FunctionTemplate::New(isolate, Print)); global_template->Set(String::NewFromUtf8(isolate, "write"), - FunctionTemplate::New(Write)); + FunctionTemplate::New(isolate, Write)); global_template->Set(String::NewFromUtf8(isolate, "read"), - FunctionTemplate::New(Read)); + FunctionTemplate::New(isolate, Read)); global_template->Set(String::NewFromUtf8(isolate, "readbuffer"), - FunctionTemplate::New(ReadBuffer)); + FunctionTemplate::New(isolate, ReadBuffer)); global_template->Set(String::NewFromUtf8(isolate, "readline"), - FunctionTemplate::New(ReadLine)); + FunctionTemplate::New(isolate, ReadLine)); global_template->Set(String::NewFromUtf8(isolate, "load"), - FunctionTemplate::New(Load)); + FunctionTemplate::New(isolate, Load)); global_template->Set(String::NewFromUtf8(isolate, "quit"), - FunctionTemplate::New(Quit)); + FunctionTemplate::New(isolate, Quit)); global_template->Set(String::NewFromUtf8(isolate, "version"), - FunctionTemplate::New(Version)); + FunctionTemplate::New(isolate, Version)); // Bind the Realm object. Handle realm_template = ObjectTemplate::New(); realm_template->Set(String::NewFromUtf8(isolate, "current"), - FunctionTemplate::New(RealmCurrent)); + FunctionTemplate::New(isolate, RealmCurrent)); realm_template->Set(String::NewFromUtf8(isolate, "owner"), - FunctionTemplate::New(RealmOwner)); + FunctionTemplate::New(isolate, RealmOwner)); realm_template->Set(String::NewFromUtf8(isolate, "global"), - FunctionTemplate::New(RealmGlobal)); + FunctionTemplate::New(isolate, RealmGlobal)); realm_template->Set(String::NewFromUtf8(isolate, "create"), - FunctionTemplate::New(RealmCreate)); + FunctionTemplate::New(isolate, RealmCreate)); realm_template->Set(String::NewFromUtf8(isolate, "dispose"), - FunctionTemplate::New(RealmDispose)); + FunctionTemplate::New(isolate, RealmDispose)); realm_template->Set(String::NewFromUtf8(isolate, "switch"), - FunctionTemplate::New(RealmSwitch)); + FunctionTemplate::New(isolate, RealmSwitch)); realm_template->Set(String::NewFromUtf8(isolate, "eval"), - FunctionTemplate::New(RealmEval)); + FunctionTemplate::New(isolate, RealmEval)); realm_template->SetAccessor(String::NewFromUtf8(isolate, "shared"), RealmSharedGet, RealmSharedSet); global_template->Set(String::NewFromUtf8(isolate, "Realm"), realm_template); @@ -899,7 +899,7 @@ Handle Shell::CreateGlobalTemplate(Isolate* isolate) { #ifndef V8_SHARED Handle performance_template = ObjectTemplate::New(); performance_template->Set(String::NewFromUtf8(isolate, "now"), - FunctionTemplate::New(PerformanceNow)); + FunctionTemplate::New(isolate, PerformanceNow)); global_template->Set(String::NewFromUtf8(isolate, "performance"), performance_template); #endif // V8_SHARED diff --git a/src/extensions/externalize-string-extension.cc b/src/extensions/externalize-string-extension.cc index edc7dd8..7dc7a3c 100644 --- a/src/extensions/externalize-string-extension.cc +++ b/src/extensions/externalize-string-extension.cc @@ -64,10 +64,12 @@ v8::Handle ExternalizeStringExtension::GetNativeFunctionTemplate( v8::Isolate* isolate, v8::Handle str) { if (strcmp(*v8::String::Utf8Value(str), "externalizeString") == 0) { - return v8::FunctionTemplate::New(ExternalizeStringExtension::Externalize); + return v8::FunctionTemplate::New(isolate, + ExternalizeStringExtension::Externalize); } else { ASSERT(strcmp(*v8::String::Utf8Value(str), "isAsciiString") == 0); - return v8::FunctionTemplate::New(ExternalizeStringExtension::IsAscii); + return v8::FunctionTemplate::New(isolate, + ExternalizeStringExtension::IsAscii); } } diff --git a/src/extensions/free-buffer-extension.cc b/src/extensions/free-buffer-extension.cc index 5cf2b68..c2e3102 100644 --- a/src/extensions/free-buffer-extension.cc +++ b/src/extensions/free-buffer-extension.cc @@ -36,7 +36,7 @@ namespace internal { v8::Handle FreeBufferExtension::GetNativeFunctionTemplate( v8::Isolate* isolate, v8::Handle str) { - return v8::FunctionTemplate::New(FreeBufferExtension::FreeBuffer); + return v8::FunctionTemplate::New(isolate, FreeBufferExtension::FreeBuffer); } diff --git a/src/extensions/gc-extension.cc b/src/extensions/gc-extension.cc index b8442c1..69fd717 100644 --- a/src/extensions/gc-extension.cc +++ b/src/extensions/gc-extension.cc @@ -35,7 +35,7 @@ namespace internal { v8::Handle GCExtension::GetNativeFunctionTemplate( v8::Isolate* isolate, v8::Handle str) { - return v8::FunctionTemplate::New(GCExtension::GC); + return v8::FunctionTemplate::New(isolate, GCExtension::GC); } diff --git a/src/extensions/statistics-extension.cc b/src/extensions/statistics-extension.cc index 92d152d..767c9e7 100644 --- a/src/extensions/statistics-extension.cc +++ b/src/extensions/statistics-extension.cc @@ -38,7 +38,7 @@ v8::Handle StatisticsExtension::GetNativeFunctionTemplate( v8::Isolate* isolate, v8::Handle str) { ASSERT(strcmp(*v8::String::Utf8Value(str), "getV8Statistics") == 0); - return v8::FunctionTemplate::New(StatisticsExtension::GetCounters); + return v8::FunctionTemplate::New(isolate, StatisticsExtension::GetCounters); } diff --git a/src/extensions/trigger-failure-extension.cc b/src/extensions/trigger-failure-extension.cc index 5fe6bbb..68dea93 100644 --- a/src/extensions/trigger-failure-extension.cc +++ b/src/extensions/trigger-failure-extension.cc @@ -44,13 +44,16 @@ TriggerFailureExtension::GetNativeFunctionTemplate( v8::Handle str) { if (strcmp(*v8::String::Utf8Value(str), "triggerCheckFalse") == 0) { return v8::FunctionTemplate::New( + isolate, TriggerFailureExtension::TriggerCheckFalse); } else if (strcmp(*v8::String::Utf8Value(str), "triggerAssertFalse") == 0) { return v8::FunctionTemplate::New( + isolate, TriggerFailureExtension::TriggerAssertFalse); } else { CHECK_EQ(0, strcmp(*v8::String::Utf8Value(str), "triggerSlowAssertFalse")); return v8::FunctionTemplate::New( + isolate, TriggerFailureExtension::TriggerSlowAssertFalse); } } diff --git a/test/cctest/test-accessors.cc b/test/cctest/test-accessors.cc index 2c257ee..ba71600 100644 --- a/test/cctest/test-accessors.cc +++ b/test/cctest/test-accessors.cc @@ -65,11 +65,12 @@ static void handle_property(const v8::FunctionCallbackInfo& info) { THREADED_TEST(PropertyHandler) { LocalContext env; - v8::HandleScope scope(env->GetIsolate()); - Local fun_templ = v8::FunctionTemplate::New(); + v8::Isolate* isolate = env->GetIsolate(); + v8::HandleScope scope(isolate); + Local fun_templ = v8::FunctionTemplate::New(isolate); fun_templ->InstanceTemplate()->SetAccessor(v8_str("foo"), handle_property); Local getter_templ = - v8::FunctionTemplate::New(handle_property); + v8::FunctionTemplate::New(isolate, handle_property); getter_templ->SetLength(0); fun_templ-> InstanceTemplate()->SetAccessorProperty(v8_str("bar"), getter_templ); @@ -120,17 +121,18 @@ THREADED_TEST(GlobalVariableAccess) { foo = 0; bar = -4; baz = 10; - v8::HandleScope scope(CcTest::isolate()); - v8::Handle templ = v8::FunctionTemplate::New(); + v8::Isolate* isolate = CcTest::isolate(); + v8::HandleScope scope(isolate); + v8::Handle templ = v8::FunctionTemplate::New(isolate); templ->InstanceTemplate()->SetAccessor( v8_str("foo"), GetIntValue, SetIntValue, - v8::External::New(CcTest::isolate(), &foo)); + v8::External::New(isolate, &foo)); templ->InstanceTemplate()->SetAccessor( v8_str("bar"), GetIntValue, SetIntValue, - v8::External::New(CcTest::isolate(), &bar)); + v8::External::New(isolate, &bar)); templ->InstanceTemplate()->SetAccessor( v8_str("baz"), GetIntValue, SetIntValue, - v8::External::New(CcTest::isolate(), &baz)); + v8::External::New(isolate, &baz)); LocalContext env(0, templ->InstanceTemplate()); v8_compile("foo = (++bar) + baz")->Run(); CHECK_EQ(bar, -3); @@ -190,12 +192,13 @@ static void XSetter(const v8::FunctionCallbackInfo& info) { THREADED_TEST(AccessorIC) { LocalContext context; - v8::HandleScope scope(context->GetIsolate()); + v8::Isolate* isolate = context->GetIsolate(); + v8::HandleScope scope(isolate); v8::Handle obj = ObjectTemplate::New(); obj->SetAccessor(v8_str("x0"), XGetter, XSetter); obj->SetAccessorProperty(v8_str("x1"), - v8::FunctionTemplate::New(XGetter), - v8::FunctionTemplate::New(XSetter)); + v8::FunctionTemplate::New(isolate, XGetter), + v8::FunctionTemplate::New(isolate, XSetter)); x_holder = obj->NewInstance(); context->Global()->Set(v8_str("holder"), x_holder); x_receiver = v8::Object::New(); diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc index bb85bd9..9ea8b0d 100644 --- a/test/cctest/test-api.cc +++ b/test/cctest/test-api.cc @@ -252,18 +252,20 @@ static void TestSignature(const char* loop_js, Local receiver) { THREADED_TEST(ReceiverSignature) { LocalContext env; - v8::HandleScope scope(env->GetIsolate()); + v8::Isolate* isolate = env->GetIsolate(); + v8::HandleScope scope(isolate); // Setup templates. - v8::Handle fun = v8::FunctionTemplate::New(); - v8::Handle sig = v8::Signature::New(env->GetIsolate(), fun); + v8::Handle fun = v8::FunctionTemplate::New(isolate); + v8::Handle sig = v8::Signature::New(isolate, fun); v8::Handle callback_sig = v8::FunctionTemplate::New( - IncrementingSignatureCallback, Local(), sig); + isolate, IncrementingSignatureCallback, Local(), sig); v8::Handle callback = - v8::FunctionTemplate::New(IncrementingSignatureCallback); - v8::Handle sub_fun = v8::FunctionTemplate::New(); + v8::FunctionTemplate::New(isolate, IncrementingSignatureCallback); + v8::Handle sub_fun = v8::FunctionTemplate::New(isolate); sub_fun->Inherit(fun); - v8::Handle unrel_fun = v8::FunctionTemplate::New(); + v8::Handle unrel_fun = + v8::FunctionTemplate::New(isolate); // Install properties. v8::Handle fun_proto = fun->PrototypeTemplate(); fun_proto->Set(v8_str("prop_sig"), callback_sig); @@ -325,13 +327,17 @@ THREADED_TEST(ReceiverSignature) { THREADED_TEST(ArgumentSignature) { LocalContext env; - v8::HandleScope scope(env->GetIsolate()); - v8::Handle cons = v8::FunctionTemplate::New(); + v8::Isolate* isolate = env->GetIsolate(); + v8::HandleScope scope(isolate); + v8::Handle cons = v8::FunctionTemplate::New(isolate); cons->SetClassName(v8_str("Cons")); v8::Handle sig = v8::Signature::New( - env->GetIsolate(), v8::Handle(), 1, &cons); + isolate, v8::Handle(), 1, &cons); v8::Handle fun = - v8::FunctionTemplate::New(SignatureCallback, v8::Handle(), sig); + v8::FunctionTemplate::New(isolate, + SignatureCallback, + v8::Handle(), + sig); env->Global()->Set(v8_str("Cons"), cons->GetFunction()); env->Global()->Set(v8_str("Fun1"), fun->GetFunction()); @@ -344,18 +350,21 @@ THREADED_TEST(ArgumentSignature) { v8::Handle value3 = CompileRun("Fun1() == '';"); CHECK(value3->IsTrue()); - v8::Handle cons1 = v8::FunctionTemplate::New(); + v8::Handle cons1 = v8::FunctionTemplate::New(isolate); cons1->SetClassName(v8_str("Cons1")); - v8::Handle cons2 = v8::FunctionTemplate::New(); + v8::Handle cons2 = v8::FunctionTemplate::New(isolate); cons2->SetClassName(v8_str("Cons2")); - v8::Handle cons3 = v8::FunctionTemplate::New(); + v8::Handle cons3 = v8::FunctionTemplate::New(isolate); cons3->SetClassName(v8_str("Cons3")); v8::Handle args[3] = { cons1, cons2, cons3 }; v8::Handle wsig = v8::Signature::New( - env->GetIsolate(), v8::Handle(), 3, args); + isolate, v8::Handle(), 3, args); v8::Handle fun2 = - v8::FunctionTemplate::New(SignatureCallback, v8::Handle(), wsig); + v8::FunctionTemplate::New(isolate, + SignatureCallback, + v8::Handle(), + wsig); env->Global()->Set(v8_str("Cons1"), cons1->GetFunction()); env->Global()->Set(v8_str("Cons2"), cons2->GetFunction()); @@ -1020,10 +1029,11 @@ static void TestFunctionTemplateInitializer(Handler handler, // Test constructor calls. { LocalContext env; - v8::HandleScope scope(env->GetIsolate()); + v8::Isolate* isolate = env->GetIsolate(); + v8::HandleScope scope(isolate); Local fun_templ = - v8::FunctionTemplate::New(handler); + v8::FunctionTemplate::New(isolate, handler); Local fun = fun_templ->GetFunction(); env->Global()->Set(v8_str("obj"), fun); Local