| Index: src/bootstrapper.cc
|
| diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
|
| index 43fc0eb8355a7ad0d1be7ccb0fe4bd233ac81dd9..5f19880409168c4d7d56247d719763c8633d061b 100644
|
| --- a/src/bootstrapper.cc
|
| +++ b/src/bootstrapper.cc
|
| @@ -1820,6 +1820,7 @@ EMPTY_NATIVE_FUNCTIONS_FOR_FEATURE(harmony_sharedarraybuffer)
|
| EMPTY_NATIVE_FUNCTIONS_FOR_FEATURE(harmony_atomics)
|
| EMPTY_NATIVE_FUNCTIONS_FOR_FEATURE(harmony_new_target)
|
| EMPTY_NATIVE_FUNCTIONS_FOR_FEATURE(harmony_concat_spreadable)
|
| +EMPTY_NATIVE_FUNCTIONS_FOR_FEATURE(harmony_simd)
|
|
|
|
|
| void Genesis::InstallNativeFunctions_harmony_proxies() {
|
| @@ -1928,6 +1929,32 @@ void Genesis::InitializeGlobal_harmony_sharedarraybuffer() {
|
| }
|
|
|
|
|
| +void Genesis::InitializeGlobal_harmony_simd() {
|
| + Handle<JSGlobalObject> global(
|
| + JSGlobalObject::cast(native_context()->global_object()));
|
| + Isolate* isolate = global->GetIsolate();
|
| + Factory* factory = isolate->factory();
|
| +
|
| + Handle<String> name = factory->InternalizeUtf8String("SIMD");
|
| + Handle<JSFunction> cons = factory->NewFunction(name);
|
| + JSFunction::SetInstancePrototype(
|
| + cons,
|
| + Handle<Object>(native_context()->initial_object_prototype(), isolate));
|
| + cons->SetInstanceClassName(*name);
|
| + Handle<JSObject> simd_object = factory->NewJSObject(cons, TENURED);
|
| + DCHECK(simd_object->IsJSObject());
|
| + JSObject::AddProperty(global, name, simd_object, DONT_ENUM);
|
| +
|
| + Handle<JSFunction> float32x4_function =
|
| + InstallFunction(simd_object, "Float32x4", JS_VALUE_TYPE, JSValue::kSize,
|
| + isolate->initial_object_prototype(), Builtins::kIllegal);
|
| + // Set the instance class name since InstallFunction only does this when
|
| + // we install on the GlobalObject.
|
| + float32x4_function->SetInstanceClassName(*factory->Float32x4_string());
|
| + native_context()->set_float32x4_function(*float32x4_function);
|
| +}
|
| +
|
| +
|
| Handle<JSFunction> Genesis::InstallInternalArray(Handle<JSObject> target,
|
| const char* name,
|
| ElementsKind elements_kind) {
|
| @@ -2504,6 +2531,8 @@ bool Genesis::InstallExperimentalNatives() {
|
| static const char* harmony_new_target_natives[] = {nullptr};
|
| static const char* harmony_concat_spreadable_natives[] = {
|
| "native harmony-concat-spreadable.js", nullptr};
|
| + static const char* harmony_simd_natives[] = {"native harmony-simd.js",
|
| + nullptr};
|
|
|
| for (int i = ExperimentalNatives::GetDebuggerCount();
|
| i < ExperimentalNatives::GetBuiltinsCount(); i++) {
|
|
|