| 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;
|
| }
|
|
|
|
|
|
|