| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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_IA32. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_IA32. |
| 6 #if defined(TARGET_ARCH_IA32) | 6 #if defined(TARGET_ARCH_IA32) |
| 7 | 7 |
| 8 #include "vm/opt_code_generator.h" | 8 #include "vm/opt_code_generator.h" |
| 9 | 9 |
| 10 #include "vm/assembler_macros.h" | 10 #include "vm/assembler_macros.h" |
| (...skipping 942 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 953 __ popl(kRightRegister); | 953 __ popl(kRightRegister); |
| 954 __ popl(kLeftRegister); | 954 __ popl(kLeftRegister); |
| 955 } else if (left_info.IsClass(double_class_) && left_info.is_temp()) { | 955 } else if (left_info.IsClass(double_class_) && left_info.is_temp()) { |
| 956 result_register = kLeftRegister; | 956 result_register = kLeftRegister; |
| 957 } else if (right_info.IsClass(double_class_) && right_info.is_temp()) { | 957 } else if (right_info.IsClass(double_class_) && right_info.is_temp()) { |
| 958 result_register = kRightRegister; | 958 result_register = kRightRegister; |
| 959 } else { | 959 } else { |
| 960 result_register = kAllocatedRegister; | 960 result_register = kAllocatedRegister; |
| 961 // Use inlined temporary double object. | 961 // Use inlined temporary double object. |
| 962 const Double& double_object = | 962 const Double& double_object = |
| 963 Double::ZoneHandle(Double::New(0.0)); | 963 Double::ZoneHandle(Double::New(0.0, Heap::kOld)); |
| 964 __ LoadObject(result_register, double_object); | 964 __ LoadObject(result_register, double_object); |
| 965 } | 965 } |
| 966 Label is_smi, extract_left; | 966 Label is_smi, extract_left; |
| 967 DeoptimizationBlob* deopt_blob = NULL; | 967 DeoptimizationBlob* deopt_blob = NULL; |
| 968 Label* deopt_lbl = NULL; | 968 Label* deopt_lbl = NULL; |
| 969 if (!left_info.IsClass(double_class_) || | 969 if (!left_info.IsClass(double_class_) || |
| 970 !right_info.IsClass(double_class_)) { | 970 !right_info.IsClass(double_class_)) { |
| 971 deopt_blob = AddDeoptimizationBlob(node, | 971 deopt_blob = AddDeoptimizationBlob(node, |
| 972 kLeftRegister, | 972 kLeftRegister, |
| 973 kRightRegister, | 973 kRightRegister, |
| (...skipping 1677 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2651 if (IsResultNeeded(node)) { | 2651 if (IsResultNeeded(node)) { |
| 2652 // The result is the input value. | 2652 // The result is the input value. |
| 2653 __ pushl(EAX); | 2653 __ pushl(EAX); |
| 2654 } | 2654 } |
| 2655 } | 2655 } |
| 2656 | 2656 |
| 2657 | 2657 |
| 2658 } // namespace dart | 2658 } // namespace dart |
| 2659 | 2659 |
| 2660 #endif // defined TARGET_ARCH_IA32 | 2660 #endif // defined TARGET_ARCH_IA32 |
| OLD | NEW |