Index: src/compiler/x64/code-generator-x64.cc |
diff --git a/src/compiler/x64/code-generator-x64.cc b/src/compiler/x64/code-generator-x64.cc |
index 56260804806fd904a506bf5c776b2ee7005cf200..b444900f581850e2cfecb19d60472602208ad23b 100644 |
--- a/src/compiler/x64/code-generator-x64.cc |
+++ b/src/compiler/x64/code-generator-x64.cc |
@@ -1238,6 +1238,20 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
} |
break; |
} |
+ case kX64PushMultiple: { |
+ Register args_start = i.InputRegister(0); |
+ Register args_end = i.InputRegister(1); |
+ Label loop_header, loop_check; |
+ __ j(always, &loop_check); |
+ __ bind(&loop_header); |
+ __ movp(kScratchRegister, Operand(args_start, 0)); |
Benedikt Meurer
2015/09/07 05:14:30
This sequence is probably not x32 safe. You should
|
+ __ pushq(kScratchRegister); |
+ __ subp(args_start, Immediate(kPointerSize)); |
+ __ bind(&loop_check); |
+ __ cmpp(args_start, args_end); |
+ __ j(greater, &loop_header, Label::kNear); |
+ break; |
+ } |
case kX64StoreWriteBarrier: { |
Register object = i.InputRegister(0); |
Register value = i.InputRegister(2); |