| Index: src/mips64/full-codegen-mips64.cc
|
| diff --git a/src/mips64/full-codegen-mips64.cc b/src/mips64/full-codegen-mips64.cc
|
| index ee76d9d0208551a8b03e1ddd5a0176a332de37ba..ca51ef8e38253ce0e5196e3639b0596d39b81fff 100644
|
| --- a/src/mips64/full-codegen-mips64.cc
|
| +++ b/src/mips64/full-codegen-mips64.cc
|
| @@ -3369,9 +3369,6 @@ void FullCodeGenerator::EmitSuperConstructorCall(Call* expr) {
|
| expr->expression()->AsSuperCallReference();
|
| DCHECK_NOT_NULL(super_call_ref);
|
|
|
| - VariableProxy* new_target_proxy = super_call_ref->new_target_var();
|
| - VisitForStackValue(new_target_proxy);
|
| -
|
| EmitLoadSuperConstructor(super_call_ref);
|
| __ push(result_register());
|
|
|
| @@ -3386,6 +3383,10 @@ void FullCodeGenerator::EmitSuperConstructorCall(Call* expr) {
|
| // constructor invocation.
|
| SetConstructCallPosition(expr);
|
|
|
| + // Load original constructor into a4.
|
| + VisitForAccumulatorValue(super_call_ref->new_target_var());
|
| + __ mov(a4, result_register());
|
| +
|
| // Load function and argument count into a1 and a0.
|
| __ li(a0, Operand(arg_count));
|
| __ ld(a1, MemOperand(sp, arg_count * kPointerSize));
|
| @@ -3406,8 +3407,6 @@ void FullCodeGenerator::EmitSuperConstructorCall(Call* expr) {
|
| CallConstructStub stub(isolate(), SUPER_CALL_RECORD_TARGET);
|
| __ Call(stub.GetCode(), RelocInfo::CONSTRUCT_CALL);
|
|
|
| - __ Drop(1);
|
| -
|
| RecordJSReturnSite(expr);
|
|
|
| EmitInitializeThisAfterSuper(super_call_ref, expr->CallFeedbackICSlot());
|
| @@ -4345,6 +4344,9 @@ void FullCodeGenerator::EmitDefaultConstructorCallSuper(CallRuntime* expr) {
|
| __ CallRuntime(Runtime::kGetPrototype, 1);
|
| __ Push(result_register());
|
|
|
| + // Load original constructor into a4.
|
| + __ ld(a4, MemOperand(sp, 1 * kPointerSize));
|
| +
|
| // Check if the calling frame is an arguments adaptor frame.
|
| Label adaptor_frame, args_set_up, runtime;
|
| __ ld(a2, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
|
|