| Index: src/x64/code-stubs-x64.cc
|
| diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc
|
| index eabb22690ab7843ce198eb23a805ff384b1ccea1..ef724f3431a9a0d1b80d089f72df0ec2d0c9c926 100644
|
| --- a/src/x64/code-stubs-x64.cc
|
| +++ b/src/x64/code-stubs-x64.cc
|
| @@ -4614,8 +4614,30 @@ void ArrayConstructorStub::Generate(MacroAssembler* masm) {
|
| __ bind(&no_info);
|
| GenerateDispatchToArrayStub(masm, DISABLE_ALLOCATION_SITES);
|
|
|
| + // Subclassing
|
| __ bind(&subclassing);
|
| - __ TailCallRuntime(Runtime::kThrowArrayNotSubclassableError, 0, 1);
|
| + __ Pop(rcx); // return address.
|
| + __ Push(rdi);
|
| + __ Push(rdx);
|
| +
|
| + // Adjust argc.
|
| + switch (argument_count()) {
|
| + case ANY:
|
| + case MORE_THAN_ONE:
|
| + __ addp(rax, Immediate(2));
|
| + break;
|
| + case NONE:
|
| + __ movp(rax, Immediate(2));
|
| + break;
|
| + case ONE:
|
| + __ movp(rax, Immediate(3));
|
| + break;
|
| + }
|
| +
|
| + __ Push(rcx);
|
| + __ JumpToExternalReference(
|
| + ExternalReference(Runtime::kArrayConstructorWithSubclassing, isolate()),
|
| + 1);
|
| }
|
|
|
|
|
|
|