Index: src/arm64/full-codegen-arm64.cc |
diff --git a/src/arm64/full-codegen-arm64.cc b/src/arm64/full-codegen-arm64.cc |
index 81ccf2a031cd5b2c753a6efc744c0600abbb3501..c0eca3c401b5af80dbfc4c8831e5bc5075b67953 100644 |
--- a/src/arm64/full-codegen-arm64.cc |
+++ b/src/arm64/full-codegen-arm64.cc |
@@ -2741,6 +2741,15 @@ void FullCodeGenerator::VisitCall(Call* expr) { |
EmitKeyedCallWithLoadIC(expr, property->key()); |
} |
} |
+ } else if (call_type == Call::SUPER_CALL) { |
+ SuperReference* super_ref = callee->AsSuperReference(); |
+ DCHECK(super_ref != NULL); |
+ __ Ldr(x0, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset)); |
+ __ Push(x0); |
+ __ CallRuntime(Runtime::kGetPrototype, 1); |
+ __ Push(result_register()); |
+ VisitForStackValue(super_ref->this_var()); |
+ EmitCall(expr, CallICState::METHOD); |
} else { |
DCHECK(call_type == Call::OTHER_CALL); |
// Call to an arbitrary expression not handled specially above. |