| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 #include "vm/method_recognizer.h" | 5 #include "vm/method_recognizer.h" |
| 6 | 6 |
| 7 #include "vm/object.h" | 7 #include "vm/object.h" |
| 8 #include "vm/symbols.h" | 8 #include "vm/symbols.h" |
| 9 | 9 |
| 10 namespace dart { | 10 namespace dart { |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 func = Library::GetFunction(libs, #class_name, #function_name); \ | 47 func = Library::GetFunction(libs, #class_name, #function_name); \ |
| 48 if (func.IsNull()) { \ | 48 if (func.IsNull()) { \ |
| 49 OS::PrintErr("Missing %s::%s\n", #class_name, #function_name); \ | 49 OS::PrintErr("Missing %s::%s\n", #class_name, #function_name); \ |
| 50 UNREACHABLE(); \ | 50 UNREACHABLE(); \ |
| 51 } \ | 51 } \ |
| 52 ASSERT(func.CheckSourceFingerprint(fp)); \ | 52 ASSERT(func.CheckSourceFingerprint(fp)); \ |
| 53 func.set_recognized_kind(k##enum_name); | 53 func.set_recognized_kind(k##enum_name); |
| 54 | 54 |
| 55 RECOGNIZED_LIST(SET_RECOGNIZED_KIND); | 55 RECOGNIZED_LIST(SET_RECOGNIZED_KIND); |
| 56 | 56 |
| 57 #define SET_FUNCTION_BIT(class_name, function_name, dest, fp, setter_name) \ | 57 #define SET_FUNCTION_BIT(class_name, function_name, dest, fp, setter, value) \ |
| 58 func = Library::GetFunction(libs, #class_name, #function_name); \ | 58 func = Library::GetFunction(libs, #class_name, #function_name); \ |
| 59 if (func.IsNull()) { \ | 59 if (func.IsNull()) { \ |
| 60 OS::PrintErr("Missing %s::%s\n", #class_name, #function_name); \ | 60 OS::PrintErr("Missing %s::%s\n", #class_name, #function_name); \ |
| 61 UNREACHABLE(); \ | 61 UNREACHABLE(); \ |
| 62 } \ | 62 } \ |
| 63 ASSERT(func.CheckSourceFingerprint(fp)); \ | 63 ASSERT(func.CheckSourceFingerprint(fp)); \ |
| 64 func.setter_name(true); | 64 func.setter(value); |
| 65 | 65 |
| 66 #define SET_IS_ALWAYS_INLINE(class_name, function_name, dest, fp) \ | 66 #define SET_IS_ALWAYS_INLINE(class_name, function_name, dest, fp) \ |
| 67 SET_FUNCTION_BIT(class_name, function_name, dest, fp, set_always_inline) | 67 SET_FUNCTION_BIT(class_name, function_name, dest, fp, set_always_inline, true) |
| 68 |
| 69 #define SET_IS_NEVER_INLINE(class_name, function_name, dest, fp) \ |
| 70 SET_FUNCTION_BIT(class_name, function_name, dest, fp, set_is_inlinable, false) |
| 68 | 71 |
| 69 #define SET_IS_POLYMORPHIC_TARGET(class_name, function_name, dest, fp) \ | 72 #define SET_IS_POLYMORPHIC_TARGET(class_name, function_name, dest, fp) \ |
| 70 SET_FUNCTION_BIT(class_name, function_name, dest, fp, \ | 73 SET_FUNCTION_BIT(class_name, function_name, dest, fp, \ |
| 71 set_is_polymorphic_target) | 74 set_is_polymorphic_target, true) |
| 72 | 75 |
| 73 INLINE_WHITE_LIST(SET_IS_ALWAYS_INLINE); | 76 INLINE_WHITE_LIST(SET_IS_ALWAYS_INLINE); |
| 77 INLINE_BLACK_LIST(SET_IS_NEVER_INLINE); |
| 74 POLYMORPHIC_TARGET_LIST(SET_IS_POLYMORPHIC_TARGET); | 78 POLYMORPHIC_TARGET_LIST(SET_IS_POLYMORPHIC_TARGET); |
| 75 | 79 |
| 76 #undef SET_RECOGNIZED_KIND | 80 #undef SET_RECOGNIZED_KIND |
| 77 #undef SET_IS_ALWAYS_INLINE | 81 #undef SET_IS_ALWAYS_INLINE |
| 78 #undef SET_IS_POLYMORPHIC_TARGET | 82 #undef SET_IS_POLYMORPHIC_TARGET |
| 79 #undef SET_FUNCTION_BIT | 83 #undef SET_FUNCTION_BIT |
| 80 } | 84 } |
| 81 | 85 |
| 82 } // namespace dart | 86 } // namespace dart |
| OLD | NEW |