| 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 "vm/dart_entry.h" | 10 #include "vm/dart_entry.h" |
| (...skipping 2246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2257 slow_path->entry_label(), | 2257 slow_path->entry_label(), |
| 2258 Assembler::kFarJump, | 2258 Assembler::kFarJump, |
| 2259 result, | 2259 result, |
| 2260 PP); | 2260 PP); |
| 2261 __ Bind(slow_path->exit_label()); | 2261 __ Bind(slow_path->exit_label()); |
| 2262 __ movq(temp, FieldAddress(instance_reg, offset_in_bytes())); | 2262 __ movq(temp, FieldAddress(instance_reg, offset_in_bytes())); |
| 2263 __ movsd(value, FieldAddress(temp, Double::value_offset())); | 2263 __ movsd(value, FieldAddress(temp, Double::value_offset())); |
| 2264 __ movsd(FieldAddress(result, Double::value_offset()), value); | 2264 __ movsd(FieldAddress(result, Double::value_offset()), value); |
| 2265 __ jmp(&done); | 2265 __ jmp(&done); |
| 2266 } | 2266 } |
| 2267 |
| 2267 { | 2268 { |
| 2268 __ Bind(&load_float32x4); | 2269 __ Bind(&load_float32x4); |
| 2269 BoxFloat32x4SlowPath* slow_path = new BoxFloat32x4SlowPath(this); | 2270 BoxFloat32x4SlowPath* slow_path = new BoxFloat32x4SlowPath(this); |
| 2270 compiler->AddSlowPathCode(slow_path); | 2271 compiler->AddSlowPathCode(slow_path); |
| 2271 | 2272 |
| 2272 __ TryAllocate(compiler->float32x4_class(), | 2273 __ TryAllocate(compiler->float32x4_class(), |
| 2273 slow_path->entry_label(), | 2274 slow_path->entry_label(), |
| 2274 Assembler::kFarJump, | 2275 Assembler::kFarJump, |
| 2275 result, | 2276 result, |
| 2276 PP); | 2277 PP); |
| 2277 __ Bind(slow_path->exit_label()); | 2278 __ Bind(slow_path->exit_label()); |
| 2278 __ movq(temp, FieldAddress(instance_reg, offset_in_bytes())); | 2279 __ movq(temp, FieldAddress(instance_reg, offset_in_bytes())); |
| 2279 __ movups(value, FieldAddress(temp, Float32x4::value_offset())); | 2280 __ movups(value, FieldAddress(temp, Float32x4::value_offset())); |
| 2280 __ movups(FieldAddress(result, Float32x4::value_offset()), value); | 2281 __ movups(FieldAddress(result, Float32x4::value_offset()), value); |
| 2281 __ jmp(&done); | 2282 __ jmp(&done); |
| 2282 } | 2283 } |
| 2284 |
| 2283 { | 2285 { |
| 2284 __ Bind(&load_float64x2); | 2286 __ Bind(&load_float64x2); |
| 2285 | |
| 2286 BoxFloat64x2SlowPath* slow_path = new BoxFloat64x2SlowPath(this); | 2287 BoxFloat64x2SlowPath* slow_path = new BoxFloat64x2SlowPath(this); |
| 2287 compiler->AddSlowPathCode(slow_path); | 2288 compiler->AddSlowPathCode(slow_path); |
| 2288 | 2289 |
| 2289 __ TryAllocate(compiler->float64x2_class(), | 2290 __ TryAllocate(compiler->float64x2_class(), |
| 2290 slow_path->entry_label(), | 2291 slow_path->entry_label(), |
| 2291 Assembler::kFarJump, | 2292 Assembler::kFarJump, |
| 2292 result, | 2293 result, |
| 2293 temp); | 2294 temp); |
| 2294 __ Bind(slow_path->exit_label()); | 2295 __ Bind(slow_path->exit_label()); |
| 2295 __ movq(temp, FieldAddress(instance_reg, offset_in_bytes())); | 2296 __ movq(temp, FieldAddress(instance_reg, offset_in_bytes())); |
| (...skipping 3485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5781 PcDescriptors::kOther, | 5782 PcDescriptors::kOther, |
| 5782 locs()); | 5783 locs()); |
| 5783 __ Drop(ArgumentCount()); // Discard arguments. | 5784 __ Drop(ArgumentCount()); // Discard arguments. |
| 5784 } | 5785 } |
| 5785 | 5786 |
| 5786 } // namespace dart | 5787 } // namespace dart |
| 5787 | 5788 |
| 5788 #undef __ | 5789 #undef __ |
| 5789 | 5790 |
| 5790 #endif // defined TARGET_ARCH_X64 | 5791 #endif // defined TARGET_ARCH_X64 |
| OLD | NEW |