| Index: test/cctest/test-serialize.cc
|
| diff --git a/test/cctest/test-serialize.cc b/test/cctest/test-serialize.cc
|
| index 84e9716e653309b010a53958990cd6af21189d2d..de36877dfa6f3dc82267d8bc0fa140a98a732ae6 100644
|
| --- a/test/cctest/test-serialize.cc
|
| +++ b/test/cctest/test-serialize.cc
|
| @@ -2031,7 +2031,7 @@ TEST(SnapshotCreatorExternalReferences) {
|
| delete[] blob.data;
|
| }
|
|
|
| -TEST(SnapshotCreatorGlobalTemplate) {
|
| +TEST(SnapshotCreatorTemplates) {
|
| DisableTurbofan();
|
| v8::StartupData blob;
|
| {
|
| @@ -2042,13 +2042,16 @@ TEST(SnapshotCreatorGlobalTemplate) {
|
| v8::ExtensionConfiguration* no_extension = nullptr;
|
| v8::Local<v8::ObjectTemplate> global_template =
|
| v8::ObjectTemplate::New(isolate);
|
| - global_template->Set(
|
| - v8_str("f"), v8::FunctionTemplate::New(isolate, SerializedCallback));
|
| + v8::Local<v8::FunctionTemplate> callback =
|
| + v8::FunctionTemplate::New(isolate, SerializedCallback);
|
| + global_template->Set(v8_str("f"), callback);
|
| v8::Local<v8::Context> context =
|
| v8::Context::New(isolate, no_extension, global_template);
|
| v8::Context::Scope context_scope(context);
|
| ExpectInt32("f()", 42);
|
| CHECK_EQ(0, creator.AddContext(context));
|
| + CHECK_EQ(0, creator.AddTemplate(callback));
|
| + CHECK_EQ(1, creator.AddTemplate(global_template));
|
| }
|
| blob =
|
| creator.CreateBlob(v8::SnapshotCreator::FunctionCodeHandling::kClear);
|
| @@ -2073,6 +2076,28 @@ TEST(SnapshotCreatorGlobalTemplate) {
|
| v8::Context::New(isolate, no_extension, no_template, no_object, 0);
|
| v8::Context::Scope context_scope(context);
|
| ExpectInt32("f()", 42);
|
| +
|
| + // Retrieve the snapshotted object template.
|
| + v8::Local<v8::ObjectTemplate> obj_template =
|
| + v8::ObjectTemplate::FromSnapshot(isolate, 1);
|
| + CHECK(!obj_template.IsEmpty());
|
| + v8::Local<v8::Object> object =
|
| + obj_template->NewInstance(context).ToLocalChecked();
|
| + CHECK(context->Global()->Set(context, v8_str("o"), object).FromJust());
|
| + ExpectInt32("o.f()", 42);
|
| + // Check that it instantiates to the same prototype.
|
| + ExpectTrue("o.f.prototype === f.prototype");
|
| +
|
| + // Retrieve the snapshotted function template.
|
| + v8::Local<v8::FunctionTemplate> fun_template =
|
| + v8::FunctionTemplate::FromSnapshot(isolate, 0);
|
| + CHECK(!fun_template.IsEmpty());
|
| + v8::Local<v8::Function> fun =
|
| + fun_template->GetFunction(context).ToLocalChecked();
|
| + CHECK(context->Global()->Set(context, v8_str("g"), fun).FromJust());
|
| + ExpectInt32("g()", 42);
|
| + // Check that it instantiates to the same prototype.
|
| + ExpectTrue("g.prototype === f.prototype");
|
| }
|
|
|
| {
|
|
|