| Index: test/cctest/test-serialize.cc
|
| diff --git a/test/cctest/test-serialize.cc b/test/cctest/test-serialize.cc
|
| index 75074bed58253532e24d1976dab32dc475d6f46a..a06cfbb8cd09dc0a51f9a7f3122b4aada65d58de 100644
|
| --- a/test/cctest/test-serialize.cc
|
| +++ b/test/cctest/test-serialize.cc
|
| @@ -394,10 +394,14 @@ UNINITIALIZED_DEPENDENT_TEST(PartialDeserialization, PartialSerialization) {
|
| HandleScope handle_scope(isolate);
|
| Handle<Object> root;
|
| Handle<FixedArray> outdated_contexts;
|
| + // Intentionally empty handle. The deserializer should not come across
|
| + // any references to the global proxy in this test.
|
| + Handle<JSGlobalProxy> global_proxy = Handle<JSGlobalProxy>::null();
|
| {
|
| SnapshotData snapshot_data(Vector<const byte>(snapshot, snapshot_size));
|
| Deserializer deserializer(&snapshot_data);
|
| - root = deserializer.DeserializePartial(isolate, &outdated_contexts)
|
| + root = deserializer.DeserializePartial(isolate, global_proxy,
|
| + &outdated_contexts)
|
| .ToHandleChecked();
|
| CHECK_EQ(0, outdated_contexts->length());
|
| CHECK(root->IsString());
|
| @@ -407,7 +411,8 @@ UNINITIALIZED_DEPENDENT_TEST(PartialDeserialization, PartialSerialization) {
|
| {
|
| SnapshotData snapshot_data(Vector<const byte>(snapshot, snapshot_size));
|
| Deserializer deserializer(&snapshot_data);
|
| - root2 = deserializer.DeserializePartial(isolate, &outdated_contexts)
|
| + root2 = deserializer.DeserializePartial(isolate, global_proxy,
|
| + &outdated_contexts)
|
| .ToHandleChecked();
|
| CHECK(root2->IsString());
|
| CHECK(root.is_identical_to(root2));
|
| @@ -506,12 +511,16 @@ UNINITIALIZED_DEPENDENT_TEST(ContextDeserialization, ContextSerialization) {
|
| HandleScope handle_scope(isolate);
|
| Handle<Object> root;
|
| Handle<FixedArray> outdated_contexts;
|
| + Handle<JSGlobalProxy> global_proxy =
|
| + isolate->factory()->NewUninitializedJSGlobalProxy();
|
| {
|
| SnapshotData snapshot_data(Vector<const byte>(snapshot, snapshot_size));
|
| Deserializer deserializer(&snapshot_data);
|
| - root = deserializer.DeserializePartial(isolate, &outdated_contexts)
|
| + root = deserializer.DeserializePartial(isolate, global_proxy,
|
| + &outdated_contexts)
|
| .ToHandleChecked();
|
| CHECK(root->IsContext());
|
| + CHECK(Handle<Context>::cast(root)->global_proxy() == *global_proxy);
|
| CHECK_EQ(1, outdated_contexts->length());
|
| }
|
|
|
| @@ -519,7 +528,8 @@ UNINITIALIZED_DEPENDENT_TEST(ContextDeserialization, ContextSerialization) {
|
| {
|
| SnapshotData snapshot_data(Vector<const byte>(snapshot, snapshot_size));
|
| Deserializer deserializer(&snapshot_data);
|
| - root2 = deserializer.DeserializePartial(isolate, &outdated_contexts)
|
| + root2 = deserializer.DeserializePartial(isolate, global_proxy,
|
| + &outdated_contexts)
|
| .ToHandleChecked();
|
| CHECK(root2->IsContext());
|
| CHECK(!root.is_identical_to(root2));
|
| @@ -554,7 +564,8 @@ UNINITIALIZED_TEST(CustomContextSerialization) {
|
| "var e;"
|
| "(function() {"
|
| " e = function(s) { eval (s); }"
|
| - "})();");
|
| + "})();"
|
| + "var o = this;");
|
| }
|
| // Make sure all builtin scripts are cached.
|
| {
|
| @@ -625,13 +636,22 @@ UNINITIALIZED_DEPENDENT_TEST(CustomContextDeSerialization,
|
| HandleScope handle_scope(isolate);
|
| Handle<Object> root;
|
| Handle<FixedArray> outdated_contexts;
|
| + Handle<JSGlobalProxy> global_proxy =
|
| + isolate->factory()->NewUninitializedJSGlobalProxy();
|
| {
|
| SnapshotData snapshot_data(Vector<const byte>(snapshot, snapshot_size));
|
| Deserializer deserializer(&snapshot_data);
|
| - root = deserializer.DeserializePartial(isolate, &outdated_contexts)
|
| + root = deserializer.DeserializePartial(isolate, global_proxy,
|
| + &outdated_contexts)
|
| .ToHandleChecked();
|
| CHECK_EQ(2, outdated_contexts->length());
|
| CHECK(root->IsContext());
|
| + Handle<Context> context = Handle<Context>::cast(root);
|
| + CHECK(context->global_proxy() == *global_proxy);
|
| + Handle<String> o = isolate->factory()->NewStringFromAsciiChecked("o");
|
| + Handle<JSObject> global_object(context->global_object(), isolate);
|
| + Handle<Object> property = JSObject::GetDataProperty(global_object, o);
|
| + CHECK(property.is_identical_to(global_proxy));
|
| }
|
| }
|
| v8_isolate->Dispose();
|
|
|