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 |