Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 // The intrinsic code below is executed before a method has built its frame. | 5 // The intrinsic code below is executed before a method has built its frame. |
| 6 // The return address is on the stack and the arguments below it. | 6 // The return address is on the stack and the arguments below it. |
| 7 // Registers EDX (arguments descriptor) and ECX (function) must be preserved. | 7 // Registers EDX (arguments descriptor) and ECX (function) must be preserved. |
| 8 // Each intrinsification method returns true if the corresponding | 8 // Each intrinsification method returns true if the corresponding |
| 9 // Dart method was intrinsified. | 9 // Dart method was intrinsified. |
| 10 | 10 |
| (...skipping 1080 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1091 lo_false_cond = (true_condition == LESS) ? ABOVE_EQUAL : ABOVE; | 1091 lo_false_cond = (true_condition == LESS) ? ABOVE_EQUAL : ABOVE; |
| 1092 break; | 1092 break; |
| 1093 case GREATER: | 1093 case GREATER: |
| 1094 case GREATER_EQUAL: | 1094 case GREATER_EQUAL: |
| 1095 hi_true_cond = GREATER; | 1095 hi_true_cond = GREATER; |
| 1096 hi_false_cond = LESS; | 1096 hi_false_cond = LESS; |
| 1097 lo_false_cond = (true_condition == GREATER) ? BELOW_EQUAL : BELOW; | 1097 lo_false_cond = (true_condition == GREATER) ? BELOW_EQUAL : BELOW; |
| 1098 break; | 1098 break; |
| 1099 default: | 1099 default: |
| 1100 UNREACHABLE(); | 1100 UNREACHABLE(); |
| 1101 hi_true_cond = hi_false_cond = lo_false_cond = OVERFLOW; | |
|
siva
2012/10/25 00:36:33
It seems weird to have this initialization code af
| |
| 1101 } | 1102 } |
| 1102 __ Bind(&try_mint_smi); | 1103 __ Bind(&try_mint_smi); |
| 1103 // Note that EDX and ECX must be preserved in case we fall through to main | 1104 // Note that EDX and ECX must be preserved in case we fall through to main |
| 1104 // method. | 1105 // method. |
| 1105 // EAX contains the right argument. | 1106 // EAX contains the right argument. |
| 1106 __ movl(EBX, Address(ESP, + 2 * kWordSize)); // Left argument. | 1107 __ movl(EBX, Address(ESP, + 2 * kWordSize)); // Left argument. |
| 1107 // Push left as 64 bit integer. | 1108 // Push left as 64 bit integer. |
| 1108 Push64SmiOrMint(assembler, EBX, EDI, &fall_through); | 1109 Push64SmiOrMint(assembler, EBX, EDI, &fall_through); |
| 1109 // Push right as 64 bit integer. | 1110 // Push right as 64 bit integer. |
| 1110 Push64SmiOrMint(assembler, EAX, EDI, &drop_two_fall_through); | 1111 Push64SmiOrMint(assembler, EAX, EDI, &drop_two_fall_through); |
| (...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1731 __ Bind(&is_true); | 1732 __ Bind(&is_true); |
| 1732 __ LoadObject(EAX, bool_true); | 1733 __ LoadObject(EAX, bool_true); |
| 1733 __ ret(); | 1734 __ ret(); |
| 1734 return true; | 1735 return true; |
| 1735 } | 1736 } |
| 1736 | 1737 |
| 1737 #undef __ | 1738 #undef __ |
| 1738 } // namespace dart | 1739 } // namespace dart |
| 1739 | 1740 |
| 1740 #endif // defined TARGET_ARCH_IA32 | 1741 #endif // defined TARGET_ARCH_IA32 |
| OLD | NEW |