| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_X64. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_X64. |
| 6 #if defined(TARGET_ARCH_X64) | 6 #if defined(TARGET_ARCH_X64) |
| 7 | 7 |
| 8 #include "vm/intermediate_language.h" | 8 #include "vm/intermediate_language.h" |
| 9 | 9 |
| 10 #include "lib/error.h" | 10 #include "lib/error.h" |
| (...skipping 2301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2312 }; | 2312 }; |
| 2313 | 2313 |
| 2314 | 2314 |
| 2315 void BoxDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2315 void BoxDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 2316 BoxDoubleSlowPath* slow_path = new BoxDoubleSlowPath(this); | 2316 BoxDoubleSlowPath* slow_path = new BoxDoubleSlowPath(this); |
| 2317 compiler->AddSlowPathCode(slow_path); | 2317 compiler->AddSlowPathCode(slow_path); |
| 2318 | 2318 |
| 2319 Register out_reg = locs()->out().reg(); | 2319 Register out_reg = locs()->out().reg(); |
| 2320 XmmRegister value = locs()->in(0).fpu_reg(); | 2320 XmmRegister value = locs()->in(0).fpu_reg(); |
| 2321 | 2321 |
| 2322 AssemblerMacros::TryAllocate(compiler->assembler(), | 2322 __ TryAllocate(compiler->double_class(), |
| 2323 compiler->double_class(), | 2323 slow_path->entry_label(), |
| 2324 slow_path->entry_label(), | 2324 Assembler::kFarJump, |
| 2325 Assembler::kFarJump, | 2325 out_reg); |
| 2326 out_reg); | |
| 2327 __ Bind(slow_path->exit_label()); | 2326 __ Bind(slow_path->exit_label()); |
| 2328 __ movsd(FieldAddress(out_reg, Double::value_offset()), value); | 2327 __ movsd(FieldAddress(out_reg, Double::value_offset()), value); |
| 2329 } | 2328 } |
| 2330 | 2329 |
| 2331 | 2330 |
| 2332 LocationSummary* UnboxDoubleInstr::MakeLocationSummary() const { | 2331 LocationSummary* UnboxDoubleInstr::MakeLocationSummary() const { |
| 2333 const intptr_t kNumInputs = 1; | 2332 const intptr_t kNumInputs = 1; |
| 2334 const intptr_t kNumTemps = 0; | 2333 const intptr_t kNumTemps = 0; |
| 2335 LocationSummary* summary = | 2334 LocationSummary* summary = |
| 2336 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 2335 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| (...skipping 823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3160 PcDescriptors::kOther, | 3159 PcDescriptors::kOther, |
| 3161 locs()); | 3160 locs()); |
| 3162 __ Drop(2); // Discard type arguments and receiver. | 3161 __ Drop(2); // Discard type arguments and receiver. |
| 3163 } | 3162 } |
| 3164 | 3163 |
| 3165 } // namespace dart | 3164 } // namespace dart |
| 3166 | 3165 |
| 3167 #undef __ | 3166 #undef __ |
| 3168 | 3167 |
| 3169 #endif // defined TARGET_ARCH_X64 | 3168 #endif // defined TARGET_ARCH_X64 |
| OLD | NEW |