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 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 // - IndirectStaticCall ArgC, D | 152 // - IndirectStaticCall ArgC, D |
153 // | 153 // |
154 // Invoke the function given by the ICData in SP[0] with arguments | 154 // Invoke the function given by the ICData in SP[0] with arguments |
155 // SP[-(1+ArgC)], ..., SP[-1] and argument descriptor PP[D]. | 155 // SP[-(1+ArgC)], ..., SP[-1] and argument descriptor PP[D]. |
156 // | 156 // |
157 // - InstanceCall<N> ArgC, D; InstanceCall<N>Opt ArgC, D | 157 // - InstanceCall<N> ArgC, D; InstanceCall<N>Opt ArgC, D |
158 // | 158 // |
159 // Lookup and invoke method with N checked arguments using ICData in PP[D] | 159 // Lookup and invoke method with N checked arguments using ICData in PP[D] |
160 // with arguments SP[-(1+ArgC)], ..., SP[-1]. | 160 // with arguments SP[-(1+ArgC)], ..., SP[-1]. |
161 // | 161 // |
162 // - NativeCall, NativeBootstrapCall | 162 // - NativeBootstrapCall, NativeNoScopeCall, NativeAutoScopeCall |
163 // | 163 // |
164 // Invoke native function SP[-1] with argc_tag SP[0]. | 164 // Invoke native function SP[-1] with argc_tag SP[0]. |
165 // | 165 // |
166 // - PushPolymorphicInstanceCall ArgC, D | 166 // - PushPolymorphicInstanceCall ArgC, D |
167 // | 167 // |
168 // Skips 2*D + 1 instructions and pushes a function object onto the stack | 168 // Skips 2*D + 1 instructions and pushes a function object onto the stack |
169 // if one can be found as follows. Otherwise skips only 2*D instructions. | 169 // if one can be found as follows. Otherwise skips only 2*D instructions. |
170 // The function is looked up in the IC data encoded in the following 2*D | 170 // The function is looked up in the IC data encoded in the following 2*D |
171 // Nop instructions. The Nop instructions should be arranged in pairs with | 171 // Nop instructions. The Nop instructions should be arranged in pairs with |
172 // the first being the cid, and the second being the function to push if | 172 // the first being the cid, and the second being the function to push if |
(...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
689 V(StoreLocal, X, xeg, ___, ___) \ | 689 V(StoreLocal, X, xeg, ___, ___) \ |
690 V(PopLocal, X, xeg, ___, ___) \ | 690 V(PopLocal, X, xeg, ___, ___) \ |
691 V(IndirectStaticCall, A_D, num, num, ___) \ | 691 V(IndirectStaticCall, A_D, num, num, ___) \ |
692 V(StaticCall, A_D, num, num, ___) \ | 692 V(StaticCall, A_D, num, num, ___) \ |
693 V(InstanceCall1, A_D, num, num, ___) \ | 693 V(InstanceCall1, A_D, num, num, ___) \ |
694 V(InstanceCall2, A_D, num, num, ___) \ | 694 V(InstanceCall2, A_D, num, num, ___) \ |
695 V(InstanceCall1Opt, A_D, num, num, ___) \ | 695 V(InstanceCall1Opt, A_D, num, num, ___) \ |
696 V(InstanceCall2Opt, A_D, num, num, ___) \ | 696 V(InstanceCall2Opt, A_D, num, num, ___) \ |
697 V(PushPolymorphicInstanceCall, A_D, num, num, ___) \ | 697 V(PushPolymorphicInstanceCall, A_D, num, num, ___) \ |
698 V(PushPolymorphicInstanceCallByRange, A_D, num, num, ___) \ | 698 V(PushPolymorphicInstanceCallByRange, A_D, num, num, ___) \ |
699 V(NativeCall, 0, ___, ___, ___) \ | |
700 V(NativeBootstrapCall, 0, ___, ___, ___) \ | 699 V(NativeBootstrapCall, 0, ___, ___, ___) \ |
| 700 V(NativeNoScopeCall, 0, ___, ___, ___) \ |
| 701 V(NativeAutoScopeCall, 0, ___, ___, ___) \ |
701 V(OneByteStringFromCharCode, A_X, reg, xeg, ___) \ | 702 V(OneByteStringFromCharCode, A_X, reg, xeg, ___) \ |
702 V(StringToCharCode, A_X, reg, xeg, ___) \ | 703 V(StringToCharCode, A_X, reg, xeg, ___) \ |
703 V(AddTOS, 0, ___, ___, ___) \ | 704 V(AddTOS, 0, ___, ___, ___) \ |
704 V(SubTOS, 0, ___, ___, ___) \ | 705 V(SubTOS, 0, ___, ___, ___) \ |
705 V(MulTOS, 0, ___, ___, ___) \ | 706 V(MulTOS, 0, ___, ___, ___) \ |
706 V(BitOrTOS, 0, ___, ___, ___) \ | 707 V(BitOrTOS, 0, ___, ___, ___) \ |
707 V(BitAndTOS, 0, ___, ___, ___) \ | 708 V(BitAndTOS, 0, ___, ___, ___) \ |
708 V(EqualTOS, 0, ___, ___, ___) \ | 709 V(EqualTOS, 0, ___, ___, ___) \ |
709 V(LessThanTOS, 0, ___, ___, ___) \ | 710 V(LessThanTOS, 0, ___, ___, ___) \ |
710 V(GreaterThanTOS, 0, ___, ___, ___) \ | 711 V(GreaterThanTOS, 0, ___, ___, ___) \ |
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
982 | 983 |
983 // After a comparison, the condition NEXT_IS_TRUE means the following | 984 // After a comparison, the condition NEXT_IS_TRUE means the following |
984 // instruction is executed if the comparision is true and skipped over overwise. | 985 // instruction is executed if the comparision is true and skipped over overwise. |
985 // Conidition NEXT_IS_FALSE means the following instruction is executed if the | 986 // Conidition NEXT_IS_FALSE means the following instruction is executed if the |
986 // comparison is false and skipped over otherwise. | 987 // comparison is false and skipped over otherwise. |
987 enum Condition { NEXT_IS_TRUE, NEXT_IS_FALSE }; | 988 enum Condition { NEXT_IS_TRUE, NEXT_IS_FALSE }; |
988 | 989 |
989 } // namespace dart | 990 } // namespace dart |
990 | 991 |
991 #endif // RUNTIME_VM_CONSTANTS_DBC_H_ | 992 #endif // RUNTIME_VM_CONSTANTS_DBC_H_ |
OLD | NEW |