Chromium Code Reviews| Index: runtime/vm/intermediate_language_x64.cc |
| =================================================================== |
| --- runtime/vm/intermediate_language_x64.cc (revision 35632) |
| +++ runtime/vm/intermediate_language_x64.cc (working copy) |
| @@ -228,6 +228,28 @@ |
| } |
| +LocationSummary* UnboxedConstantInstr::MakeLocationSummary(bool opt) const { |
| + const intptr_t kNumInputs = 0; |
| + const intptr_t kNumTemps = 1; |
| + LocationSummary* locs = |
| + new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| + locs->set_out(0, Location::RequiresFpuRegister()); |
| + locs->set_temp(0, Location::RequiresRegister()); |
| + return locs; |
| +} |
| + |
| + |
| +void UnboxedConstantInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| + // The register allocator drops constant definitions that have no uses. |
| + if (!locs()->out(0).IsInvalid()) { |
| + Register boxed = locs()->temp(0).reg(); |
| + XmmRegister result = locs()->out(0).fpu_reg(); |
| + __ LoadObject(boxed, value(), PP); |
| + __ movsd(result, FieldAddress(boxed, Double::value_offset())); |
|
Florian Schneider
2014/05/01 18:36:23
Do the same as on ia32 here?
srdjan
2014/05/01 20:33:04
Implemented LoadDoubleConstant, using it here.
|
| + } |
| +} |
| + |
| + |
| LocationSummary* AssertAssignableInstr::MakeLocationSummary(bool opt) const { |
| const intptr_t kNumInputs = 3; |
| const intptr_t kNumTemps = 0; |