Index: src/bootstrapper.cc |
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc |
index be025b40870f9ff4b64d0d37e4012e9acafa47ac..baa6c3b2fa2c38509a75dbbfebcbef2308b75a74 100644 |
--- a/src/bootstrapper.cc |
+++ b/src/bootstrapper.cc |
@@ -216,7 +216,7 @@ class Genesis BASE_EMBEDDED { |
HARMONY_SHIPPING(DECLARE_FEATURE_INITIALIZATION) |
#undef DECLARE_FEATURE_INITIALIZATION |
- void InstallOneBuiltinFunction(const char* object, const char* method, |
+ void InstallOneBuiltinFunction(Handle<Object> prototype, const char* method, |
Builtins::Name name); |
void InitializeGlobal_experimental_fast_array_builtins(); |
@@ -3827,35 +3827,38 @@ void InstallPublicSymbol(Factory* factory, Handle<Context> native_context, |
JSObject::AddProperty(symbol, name_string, value, attributes); |
} |
-void Genesis::InstallOneBuiltinFunction(const char* object_name, |
+void Genesis::InstallOneBuiltinFunction(Handle<Object> prototype, |
const char* method_name, |
Builtins::Name builtin_name) { |
- Handle<JSGlobalObject> global(native_context()->global_object()); |
- Isolate* isolate = global->GetIsolate(); |
- Factory* factory = isolate->factory(); |
- |
- LookupIterator it1(global, factory->NewStringFromAsciiChecked(object_name), |
- LookupIterator::OWN_SKIP_INTERCEPTOR); |
- Handle<Object> object = Object::GetProperty(&it1).ToHandleChecked(); |
- LookupIterator it2(object, factory->NewStringFromAsciiChecked("prototype"), |
- LookupIterator::OWN_SKIP_INTERCEPTOR); |
- Handle<Object> prototype = Object::GetProperty(&it2).ToHandleChecked(); |
- |
- LookupIterator it3(prototype, factory->NewStringFromAsciiChecked(method_name), |
- LookupIterator::OWN_SKIP_INTERCEPTOR); |
- Handle<Object> function = Object::GetProperty(&it3).ToHandleChecked(); |
+ LookupIterator it( |
+ prototype, isolate()->factory()->NewStringFromAsciiChecked(method_name), |
+ LookupIterator::OWN_SKIP_INTERCEPTOR); |
+ Handle<Object> function = Object::GetProperty(&it).ToHandleChecked(); |
Handle<JSFunction>::cast(function)->set_code( |
- isolate->builtins()->builtin(builtin_name)); |
+ isolate()->builtins()->builtin(builtin_name)); |
Handle<JSFunction>::cast(function)->shared()->set_code( |
- isolate->builtins()->builtin(builtin_name)); |
+ isolate()->builtins()->builtin(builtin_name)); |
} |
void Genesis::InitializeGlobal_experimental_fast_array_builtins() { |
if (!FLAG_experimental_fast_array_builtins) return; |
- |
- // Insert experimental fast array builtins here. |
- InstallOneBuiltinFunction("Array", "filter", Builtins::kArrayFilter); |
- InstallOneBuiltinFunction("Array", "map", Builtins::kArrayMap); |
+ { |
+ Handle<JSFunction> array_constructor(native_context()->array_function()); |
+ Handle<Object> array_prototype(array_constructor->prototype(), isolate()); |
+ // Insert experimental fast Array builtins here. |
+ InstallOneBuiltinFunction(array_prototype, "filter", |
+ Builtins::kArrayFilter); |
+ InstallOneBuiltinFunction(array_prototype, "map", Builtins::kArrayMap); |
+ } |
+ { |
+ Handle<Object> typed_array_prototype( |
+ native_context()->typed_array_prototype(), isolate()); |
+ // Insert experimental fast TypedArray builtins here. |
+ InstallOneBuiltinFunction(typed_array_prototype, "every", |
+ Builtins::kTypedArrayPrototypeEvery); |
+ InstallOneBuiltinFunction(typed_array_prototype, "some", |
+ Builtins::kTypedArrayPrototypeSome); |
+ } |
} |
void Genesis::InitializeGlobal_harmony_sharedarraybuffer() { |