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 #ifndef RUNTIME_VM_STUB_CODE_H_ | 5 #ifndef RUNTIME_VM_STUB_CODE_H_ |
6 #define RUNTIME_VM_STUB_CODE_H_ | 6 #define RUNTIME_VM_STUB_CODE_H_ |
7 | 7 |
8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" |
9 #include "vm/assembler.h" | 9 #include "vm/assembler.h" |
10 | 10 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 V(SmiAddInlineCache) \ | 59 V(SmiAddInlineCache) \ |
60 V(SmiSubInlineCache) \ | 60 V(SmiSubInlineCache) \ |
61 V(SmiEqualInlineCache) \ | 61 V(SmiEqualInlineCache) \ |
62 V(OneArgOptimizedCheckInlineCache) \ | 62 V(OneArgOptimizedCheckInlineCache) \ |
63 V(TwoArgsOptimizedCheckInlineCache) \ | 63 V(TwoArgsOptimizedCheckInlineCache) \ |
64 V(ZeroArgsUnoptimizedStaticCall) \ | 64 V(ZeroArgsUnoptimizedStaticCall) \ |
65 V(OneArgUnoptimizedStaticCall) \ | 65 V(OneArgUnoptimizedStaticCall) \ |
66 V(TwoArgsUnoptimizedStaticCall) \ | 66 V(TwoArgsUnoptimizedStaticCall) \ |
67 V(Subtype1TestCache) \ | 67 V(Subtype1TestCache) \ |
68 V(Subtype2TestCache) \ | 68 V(Subtype2TestCache) \ |
69 V(Subtype3TestCache) \ | 69 V(Subtype4TestCache) \ |
70 V(CallClosureNoSuchMethod) \ | 70 V(CallClosureNoSuchMethod) \ |
71 V(FrameAwaitingMaterialization) \ | 71 V(FrameAwaitingMaterialization) \ |
72 V(AsynchronousGapMarker) | 72 V(AsynchronousGapMarker) |
73 | 73 |
74 #else | 74 #else |
75 #define VM_STUB_CODE_LIST(V) \ | 75 #define VM_STUB_CODE_LIST(V) \ |
76 V(LazyCompile) \ | 76 V(LazyCompile) \ |
77 V(OptimizeFunction) \ | 77 V(OptimizeFunction) \ |
78 V(RunExceptionHandler) \ | 78 V(RunExceptionHandler) \ |
79 V(DeoptForRewind) \ | 79 V(DeoptForRewind) \ |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 static const StubEntry* name##_entry() { return entries_[k##name##Index]; } \ | 150 static const StubEntry* name##_entry() { return entries_[k##name##Index]; } \ |
151 static intptr_t name##Size() { return name##_entry()->Size(); } | 151 static intptr_t name##Size() { return name##_entry()->Size(); } |
152 VM_STUB_CODE_LIST(STUB_CODE_ACCESSOR); | 152 VM_STUB_CODE_LIST(STUB_CODE_ACCESSOR); |
153 #undef STUB_CODE_ACCESSOR | 153 #undef STUB_CODE_ACCESSOR |
154 | 154 |
155 static RawCode* GetAllocationStubForClass(const Class& cls); | 155 static RawCode* GetAllocationStubForClass(const Class& cls); |
156 | 156 |
157 static const StubEntry* UnoptimizedStaticCallEntry(intptr_t num_args_tested); | 157 static const StubEntry* UnoptimizedStaticCallEntry(intptr_t num_args_tested); |
158 | 158 |
159 static const intptr_t kNoInstantiator = 0; | 159 static const intptr_t kNoInstantiator = 0; |
| 160 static const intptr_t kInstantiationSizeInWords = 3; |
160 | 161 |
161 static StubEntry* EntryAt(intptr_t index) { return entries_[index]; } | 162 static StubEntry* EntryAt(intptr_t index) { return entries_[index]; } |
162 static void EntryAtPut(intptr_t index, StubEntry* entry) { | 163 static void EntryAtPut(intptr_t index, StubEntry* entry) { |
163 entries_[index] = entry; | 164 entries_[index] = entry; |
164 } | 165 } |
165 static intptr_t NumEntries() { return kNumStubEntries; } | 166 static intptr_t NumEntries() { return kNumStubEntries; } |
166 | 167 |
167 private: | 168 private: |
168 friend class MegamorphicCacheTable; | 169 friend class MegamorphicCacheTable; |
169 | 170 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 | 208 |
208 // Zap value used to indicate unused CODE_REG in deopt. | 209 // Zap value used to indicate unused CODE_REG in deopt. |
209 static const uword kZapCodeReg = 0xf1f1f1f1; | 210 static const uword kZapCodeReg = 0xf1f1f1f1; |
210 | 211 |
211 // Zap value used to indicate unused return address in deopt. | 212 // Zap value used to indicate unused return address in deopt. |
212 static const uword kZapReturnAddress = 0xe1e1e1e1; | 213 static const uword kZapReturnAddress = 0xe1e1e1e1; |
213 | 214 |
214 } // namespace dart | 215 } // namespace dart |
215 | 216 |
216 #endif // RUNTIME_VM_STUB_CODE_H_ | 217 #endif // RUNTIME_VM_STUB_CODE_H_ |
OLD | NEW |