Serializer: still install experimental globals when creating a snapshot.
authoryangguo <yangguo@chromium.org>
Wed, 4 Mar 2015 15:01:55 +0000 (07:01 -0800)
committerCommit bot <commit-bot@chromium.org>
Wed, 4 Mar 2015 15:02:06 +0000 (15:02 +0000)
Experimental globals are simply flag values on the builtins object to
turn on/off harmony features. We still need to declare them even when
we don't turn on harmony features for the snapshot.

R=vogelheim@chromium.org

Review URL: https://codereview.chromium.org/978813002

Cr-Commit-Position: refs/heads/master@{#26992}

src/bootstrapper.cc
test/cctest/test-serialize.cc

index 960406d59ad6726b3bb4f3f4cc0dea541d8b1d6f..336002664870bc63cf48260fc9c21a7c92f58829 100644 (file)
@@ -2894,10 +2894,9 @@ Genesis::Genesis(Isolate* isolate,
   // Install experimental natives. Do not include them into the snapshot as we
   // should be able to turn them off at runtime. Re-installing them after
   // they have already been deserialized would also fail.
-  if (!isolate->serializer_enabled()) {
-    if (!InstallExperimentalNatives()) return;
-    InitializeExperimentalGlobal();
-  }
+  if (!isolate->serializer_enabled() && !InstallExperimentalNatives()) return;
+
+  InitializeExperimentalGlobal();
 
   // The serializer cannot serialize typed arrays. Reset those typed arrays
   // for each new context.
index e16be9775c582d925ec5c6c6e43fe116c46672f4..49bc06433cbca78cb2dfac69cd327c35eac7f43f 100644 (file)
@@ -709,7 +709,8 @@ TEST(PerIsolateSnapshotBlobs) {
   const char* source1 = "function f() { return 42; }";
   const char* source2 =
       "function f() { return g() * 2; }"
-      "function g() { return 43; }";
+      "function g() { return 43; }"
+      "/./.test('a')";
 
   v8::StartupData data1 = v8::V8::CreateSnapshotDataBlob(source1);
   v8::StartupData data2 = v8::V8::CreateSnapshotDataBlob(source2);