| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 #ifndef RUNTIME_VM_CONSTANTS_DBC_H_ | 5 #ifndef RUNTIME_VM_CONSTANTS_DBC_H_ |
| 6 #define RUNTIME_VM_CONSTANTS_DBC_H_ | 6 #define RUNTIME_VM_CONSTANTS_DBC_H_ |
| 7 | 7 |
| 8 #include "platform/globals.h" | 8 #include "platform/globals.h" |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 #include "platform/utils.h" | 10 #include "platform/utils.h" |
| (...skipping 572 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 583 // | 583 // |
| 584 // - CheckEitherNonSmi rA, rD | 584 // - CheckEitherNonSmi rA, rD |
| 585 // | 585 // |
| 586 // If either FP[rA] or FP[rD] is not a Smi, then skip the next instruction. | 586 // If either FP[rA] or FP[rD] is not a Smi, then skip the next instruction. |
| 587 // | 587 // |
| 588 // - CheckClassId rA, D | 588 // - CheckClassId rA, D |
| 589 // | 589 // |
| 590 // If the class id in FP[rA] matches the class id D, then skip the | 590 // If the class id in FP[rA] matches the class id D, then skip the |
| 591 // following instruction. | 591 // following instruction. |
| 592 // | 592 // |
| 593 // - CheckDenseSwitch rA, D | 593 // - CheckBitTest rA, D |
| 594 // | 594 // |
| 595 // Skips the next 3 instructions if the object at FP[rA] is a valid class for | 595 // Skips the next 3 instructions if the object at FP[rA] is a valid class for |
| 596 // a dense switch with low cid encoded in the following Nop instruction, and | 596 // a dense switch with low cid encoded in the following Nop instruction, and |
| 597 // the cid mask encoded in the Nop instruction after that, or if D == 1 and | 597 // the cid mask encoded in the Nop instruction after that, or if D == 1 and |
| 598 // FP[rA] is a Smi. Skips 2 instructions otherwise. | 598 // FP[rA] is a Smi. Skips 2 instructions otherwise. |
| 599 // | 599 // |
| 600 // - CheckCids rA, rB, rC | 600 // - CheckCids rA, rB, rC |
| 601 // | 601 // |
| 602 // Skips rC + 1 instructions if the object at FP[rA] is a Smi and | 602 // Skips rC + 1 instructions if the object at FP[rA] is a Smi and |
| 603 // rB == 1, or if FP[rA]'s cid is found in the array of cids encoded by the | 603 // rB == 1, or if FP[rA]'s cid is found in the array of cids encoded by the |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 834 V(InstantiateTypeArgumentsTOS, A_D, num, lit, ___) \ | 834 V(InstantiateTypeArgumentsTOS, A_D, num, lit, ___) \ |
| 835 V(InstanceOf, 0, ___, ___, ___) \ | 835 V(InstanceOf, 0, ___, ___, ___) \ |
| 836 V(BadTypeError, 0, ___, ___, ___) \ | 836 V(BadTypeError, 0, ___, ___, ___) \ |
| 837 V(AssertAssignable, A_D, num, lit, ___) \ | 837 V(AssertAssignable, A_D, num, lit, ___) \ |
| 838 V(AssertBoolean, A, num, ___, ___) \ | 838 V(AssertBoolean, A, num, ___, ___) \ |
| 839 V(TestSmi, A_D, reg, reg, ___) \ | 839 V(TestSmi, A_D, reg, reg, ___) \ |
| 840 V(TestCids, A_D, reg, num, ___) \ | 840 V(TestCids, A_D, reg, num, ___) \ |
| 841 V(CheckSmi, A, reg, ___, ___) \ | 841 V(CheckSmi, A, reg, ___, ___) \ |
| 842 V(CheckEitherNonSmi, A_D, reg, reg, ___) \ | 842 V(CheckEitherNonSmi, A_D, reg, reg, ___) \ |
| 843 V(CheckClassId, A_D, reg, num, ___) \ | 843 V(CheckClassId, A_D, reg, num, ___) \ |
| 844 V(CheckDenseSwitch, A_D, reg, num, ___) \ | 844 V(CheckBitTest, A_D, reg, num, ___) \ |
| 845 V(CheckCids, A_B_C, reg, num, num) \ | 845 V(CheckCids, A_B_C, reg, num, num) \ |
| 846 V(CheckCidsByRange, A_B_C, reg, num, num) \ | 846 V(CheckCidsByRange, A_B_C, reg, num, num) \ |
| 847 V(CheckStack, 0, ___, ___, ___) \ | 847 V(CheckStack, 0, ___, ___, ___) \ |
| 848 V(CheckStackAlwaysExit, 0, ___, ___, ___) \ | 848 V(CheckStackAlwaysExit, 0, ___, ___, ___) \ |
| 849 V(DebugStep, 0, ___, ___, ___) \ | 849 V(DebugStep, 0, ___, ___, ___) \ |
| 850 V(DebugBreak, A, num, ___, ___) \ | 850 V(DebugBreak, A, num, ___, ___) \ |
| 851 V(Deopt, A_D, num, num, ___) \ | 851 V(Deopt, A_D, num, num, ___) \ |
| 852 V(DeoptRewind, 0, ___, ___, ___) | 852 V(DeoptRewind, 0, ___, ___, ___) |
| 853 | 853 |
| 854 // clang-format on | 854 // clang-format on |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 987 | 987 |
| 988 // After a comparison, the condition NEXT_IS_TRUE means the following | 988 // After a comparison, the condition NEXT_IS_TRUE means the following |
| 989 // instruction is executed if the comparison is true and skipped over overwise. | 989 // instruction is executed if the comparison is true and skipped over overwise. |
| 990 // Condition NEXT_IS_FALSE means the following instruction is executed if the | 990 // Condition NEXT_IS_FALSE means the following instruction is executed if the |
| 991 // comparison is false and skipped over otherwise. | 991 // comparison is false and skipped over otherwise. |
| 992 enum Condition { NEXT_IS_TRUE, NEXT_IS_FALSE }; | 992 enum Condition { NEXT_IS_TRUE, NEXT_IS_FALSE }; |
| 993 | 993 |
| 994 } // namespace dart | 994 } // namespace dart |
| 995 | 995 |
| 996 #endif // RUNTIME_VM_CONSTANTS_DBC_H_ | 996 #endif // RUNTIME_VM_CONSTANTS_DBC_H_ |
| OLD | NEW |