| Index: src/mips64/code-stubs-mips64.cc
|
| diff --git a/src/mips64/code-stubs-mips64.cc b/src/mips64/code-stubs-mips64.cc
|
| index 8e926d34b05737d5cf211baf781eada71bb82616..a9f04dffc59eeef68bb110323ed7c59f4b896969 100644
|
| --- a/src/mips64/code-stubs-mips64.cc
|
| +++ b/src/mips64/code-stubs-mips64.cc
|
| @@ -4869,8 +4869,7 @@ void ArrayConstructorStub::Generate(MacroAssembler* masm) {
|
| // -- a1 : constructor
|
| // -- a2 : AllocationSite or undefined
|
| // -- a3 : original constructor
|
| - // -- sp[0] : return address
|
| - // -- sp[4] : last argument
|
| + // -- sp[0] : last argument
|
| // -----------------------------------
|
|
|
| if (FLAG_debug_code) {
|
| @@ -4908,8 +4907,28 @@ void ArrayConstructorStub::Generate(MacroAssembler* masm) {
|
| __ bind(&no_info);
|
| GenerateDispatchToArrayStub(masm, DISABLE_ALLOCATION_SITES);
|
|
|
| + // Subclassing.
|
| __ bind(&subclassing);
|
| - __ TailCallRuntime(Runtime::kThrowArrayNotSubclassableError, 0, 1);
|
| + __ Push(a1);
|
| + __ Push(a3);
|
| +
|
| + // Adjust argc.
|
| + switch (argument_count()) {
|
| + case ANY:
|
| + case MORE_THAN_ONE:
|
| + __ li(at, Operand(2));
|
| + __ addu(a0, a0, at);
|
| + break;
|
| + case NONE:
|
| + __ li(a0, Operand(2));
|
| + break;
|
| + case ONE:
|
| + __ li(a0, Operand(3));
|
| + break;
|
| + }
|
| +
|
| + __ JumpToExternalReference(
|
| + ExternalReference(Runtime::kArrayConstructorWithSubclassing, isolate()));
|
| }
|
|
|
|
|
|
|