Index: src/arm64/lithium-arm64.cc |
diff --git a/src/arm64/lithium-arm64.cc b/src/arm64/lithium-arm64.cc |
index d6b4176e9f7a82e20e741b4ae7ccb20da04890a7..50e0f44cfefac8cdd185a552dfc5e8f5711bf2cd 100644 |
--- a/src/arm64/lithium-arm64.cc |
+++ b/src/arm64/lithium-arm64.cc |
@@ -1995,9 +1995,21 @@ LInstruction* LChunkBuilder::DoPower(HPower* instr) { |
} |
-LInstruction* LChunkBuilder::DoPushArgument(HPushArgument* instr) { |
- LOperand* argument = UseRegister(instr->argument()); |
- return new(zone()) LPushArgument(argument); |
+LInstruction* LChunkBuilder::DoPushArguments(HPushArguments* instr) { |
+ int argc = instr->OperandCount(); |
+ AddInstruction(new(zone()) LPreparePushArguments(argc), instr); |
+ |
+ LPushArguments* push_args = new(zone()) LPushArguments(zone()); |
+ |
+ for (int i = 0; i < argc; ++i) { |
+ if (push_args->ShouldSplitPush()) { |
+ AddInstruction(push_args, instr); |
+ push_args = new(zone()) LPushArguments(zone()); |
+ } |
+ push_args->AddArgument(UseRegister(instr->argument(i))); |
+ } |
+ |
+ return push_args; |
} |