Switch the order of experimental global initialization and running natives.
authordslomov <dslomov@chromium.org>
Thu, 12 Mar 2015 15:44:32 +0000 (08:44 -0700)
committerCommit bot <commit-bot@chromium.org>
Thu, 12 Mar 2015 15:44:38 +0000 (15:44 +0000)
The order should match the one for normal natives.

R=yangguo@chromium.org

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

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

src/bootstrapper.cc
src/regexp.js

index ff4026c..4a28639 100644 (file)
@@ -1706,10 +1706,9 @@ void Genesis::InitializeGlobal_harmony_regexps() {
 
   Handle<HeapObject> flag(FLAG_harmony_regexps ? heap()->true_value()
                                                : heap()->false_value());
-  PropertyAttributes attributes =
-      static_cast<PropertyAttributes>(DONT_DELETE | READ_ONLY);
-  Runtime::DefineObjectProperty(builtins, factory()->harmony_regexps_string(),
-                                flag, attributes).Assert();
+  Runtime::SetObjectProperty(isolate(), builtins,
+                             factory()->harmony_regexps_string(), flag,
+                             STRICT).Assert();
 }
 
 
@@ -1718,11 +1717,9 @@ void Genesis::InitializeGlobal_harmony_unicode_regexps() {
 
   Handle<HeapObject> flag(FLAG_harmony_unicode_regexps ? heap()->true_value()
                                                        : heap()->false_value());
-  PropertyAttributes attributes =
-      static_cast<PropertyAttributes>(DONT_DELETE | READ_ONLY);
-  Runtime::DefineObjectProperty(builtins,
-                                factory()->harmony_unicode_regexps_string(),
-                                flag, attributes).Assert();
+  Runtime::SetObjectProperty(isolate(), builtins,
+                             factory()->harmony_unicode_regexps_string(), flag,
+                             STRICT).Assert();
 }
 
 
@@ -2890,9 +2887,10 @@ 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() && !InstallExperimentalNatives()) return;
-
-  InitializeExperimentalGlobal();
+  if (!isolate->serializer_enabled()) {
+    InitializeExperimentalGlobal();
+    if (!InstallExperimentalNatives()) return;
+  }
 
   // The serializer cannot serialize typed arrays. Reset those typed arrays
   // for each new context.
index 140f779..0d42b3a 100644 (file)
@@ -6,6 +6,8 @@ var $regexpExec;
 var $regexpExecNoTests;
 var $regexpLastMatchInfo;
 var $regexpLastMatchInfoOverride;
+var harmony_regexps = false;
+var harmony_unicode_regexps = false;
 
 (function() {