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_RUNTIME_ENTRY_H_ | 5 #ifndef VM_RUNTIME_ENTRY_H_ |
6 #define VM_RUNTIME_ENTRY_H_ | 6 #define VM_RUNTIME_ENTRY_H_ |
7 | 7 |
8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" |
9 #include "vm/flags.h" | 9 #include "vm/flags.h" |
10 #include "vm/native_arguments.h" | 10 #include "vm/native_arguments.h" |
(...skipping 27 matching lines...) Expand all Loading... |
38 class RuntimeEntry : public ValueObject { | 38 class RuntimeEntry : public ValueObject { |
39 public: | 39 public: |
40 RuntimeEntry(const char* name, RuntimeFunction function, | 40 RuntimeEntry(const char* name, RuntimeFunction function, |
41 intptr_t argument_count, bool is_leaf, bool is_float) | 41 intptr_t argument_count, bool is_leaf, bool is_float) |
42 : name_(name), | 42 : name_(name), |
43 function_(function), | 43 function_(function), |
44 argument_count_(argument_count), | 44 argument_count_(argument_count), |
45 is_leaf_(is_leaf), | 45 is_leaf_(is_leaf), |
46 is_float_(is_float), | 46 is_float_(is_float), |
47 next_(NULL) { | 47 next_(NULL) { |
48 // Strip off const for registration. | 48 VMTag::RegisterRuntimeEntry(this); |
49 VMTag::RegisterRuntimeEntry(const_cast<RuntimeEntry*>(this)); | |
50 } | 49 } |
51 ~RuntimeEntry() {} | 50 ~RuntimeEntry() {} |
52 | 51 |
53 const char* name() const { return name_; } | 52 const char* name() const { return name_; } |
54 RuntimeFunction function() const { return function_; } | 53 RuntimeFunction function() const { return function_; } |
55 intptr_t argument_count() const { return argument_count_; } | 54 intptr_t argument_count() const { return argument_count_; } |
56 bool is_leaf() const { return is_leaf_; } | 55 bool is_leaf() const { return is_leaf_; } |
57 bool is_float() const { return is_float_; } | 56 bool is_float() const { return is_float_; } |
58 uword GetEntryPoint() const; | 57 uword GetEntryPoint() const; |
59 | 58 |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
171 #define CHECK_LEAF_RUNTIME_ADDRESS(type, name, ...) \ | 170 #define CHECK_LEAF_RUNTIME_ADDRESS(type, name, ...) \ |
172 if (address == k##name##RuntimeEntry.GetEntryPoint()) return k##name##Id; | 171 if (address == k##name##RuntimeEntry.GetEntryPoint()) return k##name##Id; |
173 LEAF_RUNTIME_ENTRY_LIST(CHECK_LEAF_RUNTIME_ADDRESS) | 172 LEAF_RUNTIME_ENTRY_LIST(CHECK_LEAF_RUNTIME_ADDRESS) |
174 #undef CHECK_LEAF_RUNTIME_ADDRESS | 173 #undef CHECK_LEAF_RUNTIME_ADDRESS |
175 return kNoRuntimeFunctionId; | 174 return kNoRuntimeFunctionId; |
176 } | 175 } |
177 | 176 |
178 } // namespace dart | 177 } // namespace dart |
179 | 178 |
180 #endif // VM_RUNTIME_ENTRY_H_ | 179 #endif // VM_RUNTIME_ENTRY_H_ |
OLD | NEW |