| 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 VM_STUB_CODE_H_ | 5 #ifndef VM_STUB_CODE_H_ |
| 6 #define VM_STUB_CODE_H_ | 6 #define 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 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 static bool InInvocationStub(uword pc); | 109 static bool InInvocationStub(uword pc); |
| 110 | 110 |
| 111 // Check if the specified pc is in the jump to exception handler stub. | 111 // Check if the specified pc is in the jump to exception handler stub. |
| 112 static bool InJumpToExceptionHandlerStub(uword pc); | 112 static bool InJumpToExceptionHandlerStub(uword pc); |
| 113 | 113 |
| 114 // Returns NULL if no stub found. | 114 // Returns NULL if no stub found. |
| 115 static const char* NameOfStub(uword entry_point); | 115 static const char* NameOfStub(uword entry_point); |
| 116 | 116 |
| 117 // Define the shared stub code accessors. | 117 // Define the shared stub code accessors. |
| 118 #define STUB_CODE_ACCESSOR(name) \ | 118 #define STUB_CODE_ACCESSOR(name) \ |
| 119 static StubEntry* name##_entry() { \ | 119 static const StubEntry* name##_entry() { \ |
| 120 return name##_entry_; \ | 120 return name##_entry_; \ |
| 121 } \ | 121 } \ |
| 122 static const ExternalLabel& name##Label() { \ | |
| 123 return name##_entry()->label(); \ | |
| 124 } \ | |
| 125 static uword name##EntryPoint() { \ | |
| 126 return name##_entry()->EntryPoint(); \ | |
| 127 } \ | |
| 128 static intptr_t name##Size() { \ | 122 static intptr_t name##Size() { \ |
| 129 return name##_entry()->Size(); \ | 123 return name##_entry()->Size(); \ |
| 130 } | 124 } |
| 131 VM_STUB_CODE_LIST(STUB_CODE_ACCESSOR); | 125 VM_STUB_CODE_LIST(STUB_CODE_ACCESSOR); |
| 132 #undef STUB_CODE_ACCESSOR | 126 #undef STUB_CODE_ACCESSOR |
| 133 | 127 |
| 134 static RawCode* GetAllocationStubForClass(const Class& cls); | 128 static RawCode* GetAllocationStubForClass(const Class& cls); |
| 135 | 129 |
| 136 static uword UnoptimizedStaticCallEntryPoint(intptr_t num_args_tested); | 130 static const StubEntry* UnoptimizedStaticCallEntry(intptr_t num_args_tested); |
| 137 | 131 |
| 138 static const intptr_t kNoInstantiator = 0; | 132 static const intptr_t kNoInstantiator = 0; |
| 139 | 133 |
| 140 static void EmitMegamorphicLookup( | 134 static void EmitMegamorphicLookup( |
| 141 Assembler*, Register recv, Register cache, Register target); | 135 Assembler*, Register recv, Register cache, Register target); |
| 142 | 136 |
| 143 private: | 137 private: |
| 144 friend class MegamorphicCacheTable; | 138 friend class MegamorphicCacheTable; |
| 145 | 139 |
| 146 static const intptr_t kStubCodeSize = 4 * KB; | 140 static const intptr_t kStubCodeSize = 4 * KB; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 177 RangeCollectionMode range_collection_mode, | 171 RangeCollectionMode range_collection_mode, |
| 178 bool optimized = false); | 172 bool optimized = false); |
| 179 static void GenerateUsageCounterIncrement(Assembler* assembler, | 173 static void GenerateUsageCounterIncrement(Assembler* assembler, |
| 180 Register temp_reg); | 174 Register temp_reg); |
| 181 static void GenerateOptimizedUsageCounterIncrement(Assembler* assembler); | 175 static void GenerateOptimizedUsageCounterIncrement(Assembler* assembler); |
| 182 }; | 176 }; |
| 183 | 177 |
| 184 } // namespace dart | 178 } // namespace dart |
| 185 | 179 |
| 186 #endif // VM_STUB_CODE_H_ | 180 #endif // VM_STUB_CODE_H_ |
| OLD | NEW |