| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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_ARM64. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM64. |
| 6 #if defined(TARGET_ARCH_ARM64) | 6 #if defined(TARGET_ARCH_ARM64) |
| 7 | 7 |
| 8 #include "vm/intermediate_language.h" | 8 #include "vm/intermediate_language.h" |
| 9 | 9 |
| 10 #include "vm/compiler.h" | 10 #include "vm/compiler.h" |
| (...skipping 2803 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2814 __ b(slow_path->entry_label(), NE); | 2814 __ b(slow_path->entry_label(), NE); |
| 2815 switch (op_kind()) { | 2815 switch (op_kind()) { |
| 2816 case Token::kADD: | 2816 case Token::kADD: |
| 2817 __ adds(result, left, Operand(right)); | 2817 __ adds(result, left, Operand(right)); |
| 2818 __ b(slow_path->entry_label(), VS); | 2818 __ b(slow_path->entry_label(), VS); |
| 2819 break; | 2819 break; |
| 2820 case Token::kSUB: | 2820 case Token::kSUB: |
| 2821 __ subs(result, left, Operand(right)); | 2821 __ subs(result, left, Operand(right)); |
| 2822 __ b(slow_path->entry_label(), VS); | 2822 __ b(slow_path->entry_label(), VS); |
| 2823 break; | 2823 break; |
| 2824 case Token::kMUL: |
| 2825 __ SmiUntag(TMP, left); |
| 2826 __ mul(result, TMP, right); |
| 2827 __ smulh(TMP, TMP, right); |
| 2828 // TMP: result bits 64..127. |
| 2829 __ cmp(TMP, Operand(result, ASR, 63)); |
| 2830 __ b(slow_path->entry_label(), NE); |
| 2831 break; |
| 2824 case Token::kBIT_OR: | 2832 case Token::kBIT_OR: |
| 2825 // Operation part of combined smi check. | 2833 // Operation part of combined smi check. |
| 2826 break; | 2834 break; |
| 2827 case Token::kBIT_AND: | 2835 case Token::kBIT_AND: |
| 2828 __ and_(result, left, Operand(right)); | 2836 __ and_(result, left, Operand(right)); |
| 2829 break; | 2837 break; |
| 2830 case Token::kBIT_XOR: | 2838 case Token::kBIT_XOR: |
| 2831 __ eor(result, left, Operand(right)); | 2839 __ eor(result, left, Operand(right)); |
| 2832 break; | 2840 break; |
| 2833 case Token::kEQ: | 2841 case Token::kEQ: |
| (...skipping 2837 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5671 1, | 5679 1, |
| 5672 locs()); | 5680 locs()); |
| 5673 __ Drop(1); | 5681 __ Drop(1); |
| 5674 __ Pop(result); | 5682 __ Pop(result); |
| 5675 } | 5683 } |
| 5676 | 5684 |
| 5677 | 5685 |
| 5678 } // namespace dart | 5686 } // namespace dart |
| 5679 | 5687 |
| 5680 #endif // defined TARGET_ARCH_ARM64 | 5688 #endif // defined TARGET_ARCH_ARM64 |
| OLD | NEW |