| Index: src/bootstrapper.cc
|
| diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
|
| index 9d2121e54379ecb51d812aff8acfbfb7bb43babc..93f9151117605b757bbf6ef8db6d32942bd4c9bc 100644
|
| --- a/src/bootstrapper.cc
|
| +++ b/src/bootstrapper.cc
|
| @@ -1756,18 +1756,58 @@ void Genesis::InitializeBuiltinTypedArrays() {
|
| }
|
|
|
|
|
| -void Bootstrapper::ExportPrivateSymbols(Isolate* isolate,
|
| - Handle<JSObject> container) {
|
| +void Bootstrapper::ExportFromRuntime(Isolate* isolate,
|
| + Handle<JSObject> container) {
|
| HandleScope scope(isolate);
|
| #define EXPORT_PRIVATE_SYMBOL(NAME) \
|
| Handle<String> NAME##_name = \
|
| isolate->factory()->NewStringFromAsciiChecked(#NAME); \
|
| JSObject::AddProperty(container, NAME##_name, isolate->factory()->NAME(), \
|
| NONE);
|
| -
|
| PRIVATE_SYMBOL_LIST(EXPORT_PRIVATE_SYMBOL)
|
| -
|
| #undef EXPORT_PRIVATE_SYMBOL
|
| +
|
| +#define EXPORT_PUBLIC_SYMBOL(NAME, DESCRIPTION) \
|
| + Handle<String> NAME##_name = \
|
| + isolate->factory()->NewStringFromAsciiChecked(#NAME); \
|
| + JSObject::AddProperty(container, NAME##_name, isolate->factory()->NAME(), \
|
| + NONE);
|
| + PUBLIC_SYMBOL_LIST(EXPORT_PUBLIC_SYMBOL)
|
| +#undef EXPORT_PUBLIC_SYMBOL
|
| +
|
| + Handle<JSFunction> apply = InstallFunction(
|
| + container, "reflect_apply", JS_OBJECT_TYPE, JSObject::kHeaderSize,
|
| + MaybeHandle<JSObject>(), Builtins::kReflectApply);
|
| + apply->shared()->set_internal_formal_parameter_count(3);
|
| + apply->shared()->set_length(3);
|
| + isolate->native_context()->set_reflect_apply(*apply);
|
| +
|
| + Handle<JSFunction> construct = InstallFunction(
|
| + container, "reflect_construct", JS_OBJECT_TYPE, JSObject::kHeaderSize,
|
| + MaybeHandle<JSObject>(), Builtins::kReflectConstruct);
|
| + construct->shared()->set_internal_formal_parameter_count(3);
|
| + construct->shared()->set_length(2);
|
| + isolate->native_context()->set_reflect_construct(*construct);
|
| +}
|
| +
|
| +
|
| +void Bootstrapper::ExportExperimentalFromRuntime(Isolate* isolate,
|
| + Handle<JSObject> container) {
|
| + HandleScope scope(isolate);
|
| +
|
| +#define INITIALIZE_FLAG(FLAG) \
|
| + { \
|
| + Handle<String> name = \
|
| + isolate->factory()->NewStringFromAsciiChecked(#FLAG); \
|
| + JSObject::AddProperty(container, name, \
|
| + isolate->factory()->ToBoolean(FLAG), NONE); \
|
| + }
|
| +
|
| + INITIALIZE_FLAG(FLAG_harmony_regexps)
|
| + INITIALIZE_FLAG(FLAG_harmony_unicode_regexps)
|
| + INITIALIZE_FLAG(FLAG_harmony_tostring)
|
| +
|
| +#undef INITIALIZE_FLAG
|
| }
|
|
|
|
|
| @@ -1791,48 +1831,12 @@ EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_spread_arrays)
|
| EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_atomics)
|
| EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_new_target)
|
| EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_concat_spreadable)
|
| -
|
| -void Genesis::InitializeGlobal_harmony_regexps() {
|
| - Handle<JSObject> builtins(native_context()->builtins());
|
| -
|
| - Handle<HeapObject> flag(FLAG_harmony_regexps ? heap()->true_value()
|
| - : heap()->false_value());
|
| - Runtime::SetObjectProperty(isolate(), builtins,
|
| - factory()->harmony_regexps_string(), flag,
|
| - STRICT).Assert();
|
| -}
|
| -
|
| -
|
| -void Genesis::InitializeGlobal_harmony_unicode_regexps() {
|
| - Handle<JSObject> builtins(native_context()->builtins());
|
| -
|
| - Handle<HeapObject> flag(FLAG_harmony_unicode_regexps ? heap()->true_value()
|
| - : heap()->false_value());
|
| - Runtime::SetObjectProperty(isolate(), builtins,
|
| - factory()->harmony_unicode_regexps_string(), flag,
|
| - STRICT).Assert();
|
| -}
|
| +EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_regexps)
|
| +EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_unicode_regexps)
|
| +EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_tostring)
|
|
|
|
|
| void Genesis::InitializeGlobal_harmony_reflect() {
|
| - Handle<JSObject> builtins(native_context()->builtins());
|
| -
|
| - Handle<JSFunction> apply = InstallFunction(
|
| - builtins, "$reflectApply", JS_OBJECT_TYPE, JSObject::kHeaderSize,
|
| - MaybeHandle<JSObject>(), Builtins::kReflectApply);
|
| - apply->shared()->set_internal_formal_parameter_count(3);
|
| - apply->shared()->set_length(3);
|
| -
|
| - native_context()->set_reflect_apply(*apply);
|
| -
|
| - Handle<JSFunction> construct = InstallFunction(
|
| - builtins, "$reflectConstruct", JS_OBJECT_TYPE, JSObject::kHeaderSize,
|
| - MaybeHandle<JSObject>(), Builtins::kReflectConstruct);
|
| - construct->shared()->set_internal_formal_parameter_count(3);
|
| - construct->shared()->set_length(2);
|
| -
|
| - native_context()->set_reflect_construct(*construct);
|
| -
|
| if (!FLAG_harmony_reflect) return;
|
|
|
| Handle<JSGlobalObject> global(JSGlobalObject::cast(
|
| @@ -1845,16 +1849,6 @@ void Genesis::InitializeGlobal_harmony_reflect() {
|
| }
|
|
|
|
|
| -void Genesis::InitializeGlobal_harmony_tostring() {
|
| - Handle<JSObject> builtins(native_context()->builtins());
|
| -
|
| - Handle<HeapObject> flag(FLAG_harmony_tostring ? heap()->true_value()
|
| - : heap()->false_value());
|
| - Runtime::SetObjectProperty(isolate(), builtins,
|
| - factory()->harmony_tostring_string(), flag,
|
| - STRICT).Assert();
|
| -}
|
| -
|
|
|
| void Genesis::InitializeGlobal_harmony_sharedarraybuffer() {
|
| if (!FLAG_harmony_sharedarraybuffer) return;
|
| @@ -2277,17 +2271,6 @@ bool Genesis::InstallNatives(ContextType context_type) {
|
| return true;
|
| }
|
|
|
| - // Install public symbols.
|
| - {
|
| - static const PropertyAttributes attributes =
|
| - static_cast<PropertyAttributes>(READ_ONLY | DONT_DELETE);
|
| -#define INSTALL_PUBLIC_SYMBOL(name, varname, description) \
|
| - Handle<String> varname = factory()->NewStringFromStaticChars(#varname); \
|
| - JSObject::AddProperty(builtins, varname, factory()->name(), attributes);
|
| - PUBLIC_SYMBOL_LIST(INSTALL_PUBLIC_SYMBOL)
|
| -#undef INSTALL_PUBLIC_SYMBOL
|
| - }
|
| -
|
| // Run the rest of the native scripts.
|
| while (builtin_index < Natives::GetBuiltinsCount()) {
|
| if (!Bootstrapper::CompileBuiltin(isolate(), builtin_index++)) return false;
|
|
|