Index: src/bootstrapper.cc |
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc |
index 448239bb0d7327cbce24de32a0f82512483247c7..777569d09d263387c230e5a9c8c9a3f74cff9822 100644 |
--- a/src/bootstrapper.cc |
+++ b/src/bootstrapper.cc |
@@ -57,8 +57,6 @@ Handle<String> Bootstrapper::SourceLookup(int index) { |
template Handle<String> Bootstrapper::SourceLookup<Natives>(int index); |
-template Handle<String> Bootstrapper::SourceLookup<ExperimentalNatives>( |
- int index); |
template Handle<String> Bootstrapper::SourceLookup<ExperimentalExtraNatives>( |
int index); |
template Handle<String> Bootstrapper::SourceLookup<ExtraNatives>(int index); |
@@ -133,7 +131,6 @@ void DeleteNativeSources(Object* maybe_array) { |
void Bootstrapper::TearDown() { |
DeleteNativeSources(Natives::GetSourceCache(isolate_->heap())); |
- DeleteNativeSources(ExperimentalNatives::GetSourceCache(isolate_->heap())); |
DeleteNativeSources(ExtraNatives::GetSourceCache(isolate_->heap())); |
DeleteNativeSources( |
ExperimentalExtraNatives::GetSourceCache(isolate_->heap())); |
@@ -231,7 +228,6 @@ class Genesis BASE_EMBEDDED { |
void InstallTypedArray(const char* name, ElementsKind elements_kind, |
Handle<JSFunction>* fun); |
- bool InstallExperimentalNatives(); |
bool InstallExtraNatives(); |
bool InstallExperimentalExtraNatives(); |
bool InstallDebuggerNatives(); |
@@ -3096,19 +3092,6 @@ bool Bootstrapper::CompileBuiltin(Isolate* isolate, int index) { |
} |
-bool Bootstrapper::CompileExperimentalBuiltin(Isolate* isolate, int index) { |
- HandleScope scope(isolate); |
- Vector<const char> name = ExperimentalNatives::GetScriptName(index); |
- Handle<String> source_code = |
- isolate->bootstrapper()->SourceLookup<ExperimentalNatives>(index); |
- Handle<Object> global = isolate->global_object(); |
- Handle<Object> utils = isolate->natives_utils_object(); |
- Handle<Object> args[] = {global, utils}; |
- return Bootstrapper::CompileNative(isolate, name, source_code, |
- arraysize(args), args, NATIVES_CODE); |
-} |
- |
- |
bool Bootstrapper::CompileExtraBuiltin(Isolate* isolate, int index) { |
HandleScope scope(isolate); |
Vector<const char> name = ExtraNatives::GetScriptName(index); |
@@ -3760,14 +3743,36 @@ void Genesis::InitializeGlobal_harmony_sharedarraybuffer() { |
Handle<JSObject> atomics_object = factory->NewJSObject(cons, TENURED); |
DCHECK(atomics_object->IsJSObject()); |
JSObject::AddProperty(global, name, atomics_object, DONT_ENUM); |
+ JSObject::AddProperty(atomics_object, factory->to_string_tag_symbol(), name, |
+ static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY)); |
SimpleInstallFunction(atomics_object, factory->InternalizeUtf8String("load"), |
Builtins::kAtomicsLoad, 2, true); |
SimpleInstallFunction(atomics_object, factory->InternalizeUtf8String("store"), |
Builtins::kAtomicsStore, 3, true); |
+ SimpleInstallFunction(atomics_object, factory->InternalizeUtf8String("add"), |
+ Builtins::kAtomicsAdd, 3, true); |
+ SimpleInstallFunction(atomics_object, factory->InternalizeUtf8String("sub"), |
+ Builtins::kAtomicsSub, 3, true); |
+ SimpleInstallFunction(atomics_object, factory->InternalizeUtf8String("and"), |
+ Builtins::kAtomicsAnd, 3, true); |
+ SimpleInstallFunction(atomics_object, factory->InternalizeUtf8String("or"), |
+ Builtins::kAtomicsOr, 3, true); |
+ SimpleInstallFunction(atomics_object, factory->InternalizeUtf8String("xor"), |
+ Builtins::kAtomicsXor, 3, true); |
SimpleInstallFunction(atomics_object, |
factory->InternalizeUtf8String("exchange"), |
Builtins::kAtomicsExchange, 3, true); |
+ SimpleInstallFunction(atomics_object, |
+ factory->InternalizeUtf8String("compareExchange"), |
+ Builtins::kAtomicsCompareExchange, 4, true); |
+ SimpleInstallFunction(atomics_object, |
+ factory->InternalizeUtf8String("isLockFree"), |
+ Builtins::kAtomicsIsLockFree, 1, true); |
+ SimpleInstallFunction(atomics_object, factory->InternalizeUtf8String("wait"), |
+ Builtins::kAtomicsWait, 4, true); |
+ SimpleInstallFunction(atomics_object, factory->InternalizeUtf8String("wake"), |
+ Builtins::kAtomicsWake, 3, true); |
} |
void Genesis::InitializeGlobal_harmony_array_prototype_values() { |
@@ -4378,58 +4383,6 @@ bool Genesis::InstallNatives(GlobalContextType context_type) { |
return true; |
} |
- |
-bool Genesis::InstallExperimentalNatives() { |
- static const char* harmony_tailcalls_natives[] = {nullptr}; |
- static const char* harmony_sharedarraybuffer_natives[] = { |
- "native harmony-atomics.js", NULL}; |
- static const char* harmony_do_expressions_natives[] = {nullptr}; |
- static const char* harmony_regexp_lookbehind_natives[] = {nullptr}; |
- static const char* harmony_regexp_named_captures_natives[] = {nullptr}; |
- static const char* harmony_regexp_property_natives[] = {nullptr}; |
- static const char* harmony_function_sent_natives[] = {nullptr}; |
- static const char* harmony_array_prototype_values_natives[] = {nullptr}; |
-#ifdef V8_I18N_SUPPORT |
- static const char* icu_case_mapping_natives[] = {nullptr}; |
- static const char* datetime_format_to_parts_natives[] = {nullptr}; |
-#endif |
- static const char* harmony_restrictive_generators_natives[] = {nullptr}; |
- static const char* harmony_trailing_commas_natives[] = {nullptr}; |
- static const char* harmony_function_tostring_natives[] = {nullptr}; |
- static const char* harmony_class_fields_natives[] = {nullptr}; |
- static const char* harmony_object_rest_spread_natives[] = {nullptr}; |
- static const char* harmony_async_iteration_natives[] = {nullptr}; |
- static const char* harmony_dynamic_import_natives[] = {nullptr}; |
- static const char* harmony_promise_finally_natives[] = {nullptr}; |
- static const char* harmony_template_escapes_natives[] = {nullptr}; |
- |
- for (int i = ExperimentalNatives::GetDebuggerCount(); |
- i < ExperimentalNatives::GetBuiltinsCount(); i++) { |
-#define INSTALL_EXPERIMENTAL_NATIVES(id, desc) \ |
- if (FLAG_##id) { \ |
- for (size_t j = 0; id##_natives[j] != NULL; j++) { \ |
- Vector<const char> script_name = ExperimentalNatives::GetScriptName(i); \ |
- if (strncmp(script_name.start(), id##_natives[j], \ |
- script_name.length()) == 0) { \ |
- if (!Bootstrapper::CompileExperimentalBuiltin(isolate(), i)) { \ |
- return false; \ |
- } \ |
- } \ |
- } \ |
- } |
- HARMONY_INPROGRESS(INSTALL_EXPERIMENTAL_NATIVES); |
- HARMONY_STAGED(INSTALL_EXPERIMENTAL_NATIVES); |
- HARMONY_SHIPPING(INSTALL_EXPERIMENTAL_NATIVES); |
-#undef INSTALL_EXPERIMENTAL_NATIVES |
- } |
- |
- if (!CallUtilsFunction(isolate(), "PostExperimentals")) return false; |
- |
- InstallExperimentalBuiltinFunctionIds(); |
- return true; |
-} |
- |
- |
bool Genesis::InstallExtraNatives() { |
HandleScope scope(isolate()); |
@@ -4461,7 +4414,7 @@ bool Genesis::InstallDebuggerNatives() { |
for (int i = 0; i < Natives::GetDebuggerCount(); ++i) { |
if (!Bootstrapper::CompileBuiltin(isolate(), i)) return false; |
} |
- return CallUtilsFunction(isolate(), "PostDebug"); |
+ return true; |
} |
@@ -4499,26 +4452,6 @@ void Genesis::InstallBuiltinFunctionIds() { |
} |
} |
- |
-void Genesis::InstallExperimentalBuiltinFunctionIds() { |
- if (FLAG_harmony_sharedarraybuffer) { |
- struct BuiltinFunctionIds { |
- const char* holder_expr; |
- const char* fun_name; |
- BuiltinFunctionId id; |
- }; |
- |
- const BuiltinFunctionIds atomic_builtins[] = { |
- ATOMIC_FUNCTIONS_WITH_ID_LIST(INSTALL_BUILTIN_ID)}; |
- |
- for (const BuiltinFunctionIds& builtin : atomic_builtins) { |
- Handle<JSObject> holder = |
- ResolveBuiltinIdHolder(native_context(), builtin.holder_expr); |
- InstallBuiltinFunctionId(holder, builtin.fun_name, builtin.id); |
- } |
- } |
-} |
- |
#undef INSTALL_BUILTIN_ID |
@@ -5029,7 +4962,6 @@ Genesis::Genesis( |
if (context_type == FULL_CONTEXT) { |
if (!isolate->serializer_enabled()) { |
InitializeExperimentalGlobal(); |
- if (!InstallExperimentalNatives()) return; |
if (FLAG_experimental_extras) { |
if (!InstallExperimentalExtraNatives()) return; |
@@ -5044,8 +4976,6 @@ Genesis::Genesis( |
native_context()->set_string_function_prototype_map( |
string_function_prototype->map()); |
} |
- // The serializer cannot serialize typed arrays. Reset those typed arrays |
- // for each new context. |
} else if (context_type == DEBUG_CONTEXT) { |
DCHECK(!isolate->serializer_enabled()); |
InitializeExperimentalGlobal(); |