Index: src/bootstrapper.cc |
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc |
index 855080c34869ea5b69d800df9f8f34ec626733aa..af4acc39f37cc980ea2d1c5ca47471def93ae948 100644 |
--- a/src/bootstrapper.cc |
+++ b/src/bootstrapper.cc |
@@ -203,6 +203,7 @@ class Genesis BASE_EMBEDDED { |
// New context initialization. Used for creating a context from scratch. |
void InitializeGlobal(Handle<GlobalObject> global_object, |
Handle<JSFunction> empty_function); |
+ void InitializeExperimentalGlobal(); |
// Installs the contents of the native .js files on the global objects. |
// Used for creating a context from scratch. |
void InstallNativeFunctions(); |
@@ -1351,6 +1352,20 @@ void Genesis::InstallTypedArray( |
} |
+void Genesis::InitializeExperimentalGlobal() { |
+ // TODO(erikcorry): Move this into Genesis::InitializeGlobal once we no |
+ // longer need to live behind a flag. |
+ Handle<JSObject> builtins(native_context()->builtins()); |
+ |
+ 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(); |
+} |
+ |
+ |
bool Genesis::CompileBuiltin(Isolate* isolate, int index) { |
Vector<const char> name = Natives::GetScriptName(index); |
Handle<String> source_code = |
@@ -2651,6 +2666,7 @@ Genesis::Genesis(Isolate* isolate, |
// Install experimental natives. |
if (!InstallExperimentalNatives()) return; |
+ InitializeExperimentalGlobal(); |
// We can't (de-)serialize typed arrays currently, but we are lucky: The state |
// of the random number generator needs no initialization during snapshot |