Chromium Code Reviews| Index: runtime/vm/intermediate_language_ia32.cc |
| =================================================================== |
| --- runtime/vm/intermediate_language_ia32.cc (revision 16802) |
| +++ runtime/vm/intermediate_language_ia32.cc (working copy) |
| @@ -31,6 +31,33 @@ |
| } |
| +LocationSummary* PushArgumentInstr::MakeLocationSummary() const { |
| + const intptr_t kNumInputs = 1; |
| + const intptr_t kNumTemps= 0; |
| + LocationSummary* locs = |
| + new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + locs->set_in(0, Location::Any()); |
| + return locs; |
| +} |
| + |
| + |
| +void PushArgumentInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| + // In SSA mode, we need an explicit push. Nothing to do in non-SSA mode |
| + // where PushArgument is handled by BindInstr::EmitNativeCode. |
| + if (compiler->is_optimizing()) { |
| + Location value = locs()->in(0); |
| + if (value.IsRegister()) { |
| + __ pushl(locs()->in(0).reg()); |
|
Vyacheslav Egorov (Google)
2013/01/08 16:19:35
value.reg()
Florian Schneider
2013/01/08 16:36:56
Done.
|
| + } else if (value.IsConstant()) { |
| + __ PushObject(value.constant()); |
| + } else { |
| + ASSERT(value.IsStackSlot()); |
| + __ pushl(value.ToStackSlotAddress()); |
| + } |
| + } |
| +} |
| + |
| + |
| LocationSummary* ReturnInstr::MakeLocationSummary() const { |
| const intptr_t kNumInputs = 1; |
| const intptr_t kNumTemps = 1; |