| Index: src/bootstrapper.cc
|
| diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
|
| index 8467b77347936de291e0d44976bbdc1f5233715a..84a648cf2c253b4c79075b03b8019dbf52ed2682 100644
|
| --- a/src/bootstrapper.cc
|
| +++ b/src/bootstrapper.cc
|
| @@ -177,7 +177,8 @@ class Genesis BASE_EMBEDDED {
|
| #undef DECLARE_FEATURE_INITIALIZATION
|
|
|
| void InstallOneBuiltinFunction(Handle<Object> prototype, const char* method,
|
| - Builtins::Name name);
|
| + Builtins::Name name,
|
| + int internal_formal_parameter_count);
|
| void InitializeGlobal_experimental_fast_array_builtins();
|
|
|
| Handle<JSFunction> InstallArrayBuffer(Handle<JSObject> target,
|
| @@ -3862,15 +3863,17 @@ void InstallPublicSymbol(Factory* factory, Handle<Context> native_context,
|
|
|
| void Genesis::InstallOneBuiltinFunction(Handle<Object> prototype,
|
| const char* method_name,
|
| - Builtins::Name builtin_name) {
|
| + Builtins::Name builtin_name,
|
| + int internal_formal_parameter_count) {
|
| 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));
|
| - Handle<JSFunction>::cast(function)->shared()->set_code(
|
| - isolate()->builtins()->builtin(builtin_name));
|
| + SharedFunctionInfo* info = Handle<JSFunction>::cast(function)->shared();
|
| + info->set_code(isolate()->builtins()->builtin(builtin_name));
|
| + info->set_internal_formal_parameter_count(internal_formal_parameter_count);
|
| }
|
|
|
| void Genesis::InitializeGlobal_experimental_fast_array_builtins() {
|
| @@ -3880,13 +3883,17 @@ void Genesis::InitializeGlobal_experimental_fast_array_builtins() {
|
| native_context()->typed_array_prototype(), isolate());
|
| // Insert experimental fast TypedArray builtins here.
|
| InstallOneBuiltinFunction(typed_array_prototype, "every",
|
| - Builtins::kTypedArrayPrototypeEvery);
|
| + Builtins::kTypedArrayPrototypeEvery,
|
| + SharedFunctionInfo::kDontAdaptArgumentsSentinel);
|
| InstallOneBuiltinFunction(typed_array_prototype, "some",
|
| - Builtins::kTypedArrayPrototypeSome);
|
| + Builtins::kTypedArrayPrototypeSome,
|
| + SharedFunctionInfo::kDontAdaptArgumentsSentinel);
|
| InstallOneBuiltinFunction(typed_array_prototype, "reduce",
|
| - Builtins::kTypedArrayPrototypeReduce);
|
| + Builtins::kTypedArrayPrototypeReduce,
|
| + SharedFunctionInfo::kDontAdaptArgumentsSentinel);
|
| InstallOneBuiltinFunction(typed_array_prototype, "reduceRight",
|
| - Builtins::kTypedArrayPrototypeReduceRight);
|
| + Builtins::kTypedArrayPrototypeReduceRight,
|
| + SharedFunctionInfo::kDontAdaptArgumentsSentinel);
|
| }
|
| }
|
|
|
| @@ -4352,28 +4359,40 @@ bool Genesis::InstallNatives(GlobalContextType context_type) {
|
|
|
| // Install Array.prototype.forEach
|
| Handle<JSFunction> forEach = InstallArrayBuiltinFunction(
|
| - proto, "forEach", Builtins::kArrayForEach, 2);
|
| + proto, "forEach", Builtins::kArrayForEach,
|
| + SharedFunctionInfo::kDontAdaptArgumentsSentinel);
|
| // Add forEach to the context.
|
| native_context()->set_array_for_each_iterator(*forEach);
|
|
|
| // Install Array.prototype.filter
|
| - InstallArrayBuiltinFunction(proto, "filter", Builtins::kArrayFilter, 2);
|
| + InstallArrayBuiltinFunction(
|
| + proto, "filter", Builtins::kArrayFilter,
|
| + SharedFunctionInfo::kDontAdaptArgumentsSentinel);
|
|
|
| // Install Array.prototype.map
|
| - InstallArrayBuiltinFunction(proto, "map", Builtins::kArrayMap, 2);
|
| + InstallArrayBuiltinFunction(
|
| + proto, "map", Builtins::kArrayMap,
|
| + SharedFunctionInfo::kDontAdaptArgumentsSentinel);
|
|
|
| // Install Array.prototype.every
|
| - InstallArrayBuiltinFunction(proto, "every", Builtins::kArrayEvery, 2);
|
| + InstallArrayBuiltinFunction(
|
| + proto, "every", Builtins::kArrayEvery,
|
| + SharedFunctionInfo::kDontAdaptArgumentsSentinel);
|
|
|
| // Install Array.prototype.some
|
| - InstallArrayBuiltinFunction(proto, "some", Builtins::kArraySome, 2);
|
| + InstallArrayBuiltinFunction(
|
| + proto, "some", Builtins::kArraySome,
|
| + SharedFunctionInfo::kDontAdaptArgumentsSentinel);
|
|
|
| // Install Array.prototype.reduce
|
| - InstallArrayBuiltinFunction(proto, "reduce", Builtins::kArrayReduce, 2);
|
| + InstallArrayBuiltinFunction(
|
| + proto, "reduce", Builtins::kArrayReduce,
|
| + SharedFunctionInfo::kDontAdaptArgumentsSentinel);
|
|
|
| // Install Array.prototype.reduceRight
|
| - InstallArrayBuiltinFunction(proto, "reduceRight",
|
| - Builtins::kArrayReduceRight, 2);
|
| + InstallArrayBuiltinFunction(
|
| + proto, "reduceRight", Builtins::kArrayReduceRight,
|
| + SharedFunctionInfo::kDontAdaptArgumentsSentinel);
|
| }
|
|
|
| // Install InternalArray.prototype.concat
|
|
|