Chromium Code Reviews| Index: src/arm64/code-stubs-arm64.cc |
| diff --git a/src/arm64/code-stubs-arm64.cc b/src/arm64/code-stubs-arm64.cc |
| index e67b4fd2beb291703281082aa711f1c21c975fc3..1477cddb753586965563923742f9a45ea82e57ec 100644 |
| --- a/src/arm64/code-stubs-arm64.cc |
| +++ b/src/arm64/code-stubs-arm64.cc |
| @@ -2985,7 +2985,8 @@ void CallConstructStub::Generate(MacroAssembler* masm) { |
| // x0 : number of arguments |
| // x1 : the function to call |
| // x2 : feedback vector |
| - // x3 : slot in feedback vector (smi) (if r2 is not the megamorphic symbol) |
| + // x3 : slot in feedback vector (Smi, for RecordCallTarget) |
| + // x4 : original constructor (for IsSuperConstructorCall) |
| Register function = x1; |
| Label slow, non_function_call; |
| @@ -2997,7 +2998,13 @@ void CallConstructStub::Generate(MacroAssembler* masm) { |
| &slow); |
| if (RecordCallTarget()) { |
| + if (IsSuperConstructorCall()) { |
| + __ Push(x4); |
| + } |
| GenerateRecordCallTarget(masm, x0, function, x2, x3, x4, x5, x11); |
|
jbramley
2015/07/14 16:57:35
ARM64's GenerateRecordCallTarget allows the scratc
Michael Starzinger
2015/07/15 07:36:36
Acknowledged. I initially tried that, but CallStub
|
| + if (IsSuperConstructorCall()) { |
| + __ Pop(x4); |
| + } |
| __ Add(x5, x2, Operand::UntagSmiAndScale(x3, kPointerSizeLog2)); |
| if (FLAG_pretenuring_call_new) { |
| @@ -3020,9 +3027,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) { |
| } |
| if (IsSuperConstructorCall()) { |
| - __ Mov(x4, Operand(1 * kPointerSize)); |
| - __ Add(x4, x4, Operand(x0, LSL, kPointerSizeLog2)); |
| - __ Peek(x3, x4); |
| + __ Mov(x3, x4); |
| } else { |
| __ Mov(x3, function); |
| } |