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 |