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 "platform/assert.h" | 5 #include "platform/assert.h" |
6 #include "vm/bootstrap_natives.h" | 6 #include "vm/bootstrap_natives.h" |
7 | 7 |
8 namespace dart { | 8 namespace dart { |
9 | 9 |
10 DEFINE_NATIVE_ENTRY(ClassID_getID, 1) { | 10 DEFINE_NATIVE_ENTRY(ClassID_getID, 1) { |
11 const Instance& instance = | 11 const Instance& instance = |
12 Instance::CheckedHandle(zone, arguments->NativeArgAt(0)); | 12 Instance::CheckedHandle(zone, arguments->NativeArgAt(0)); |
13 return Smi::New(instance.GetClassId()); | 13 return Smi::New(instance.GetClassId()); |
14 } | 14 } |
15 | 15 |
| 16 |
| 17 DEFINE_NATIVE_ENTRY(ClassID_byName, 1) { |
| 18 GET_NON_NULL_NATIVE_ARGUMENT(String, name, arguments->NativeArgAt(0)); |
| 19 |
| 20 #define CLASS_LIST_WITH_NULL(V) \ |
| 21 V(Null) \ |
| 22 CLASS_LIST_NO_OBJECT(V) |
| 23 |
| 24 #define COMPARE(clazz) \ |
| 25 if (name.Equals(#clazz)) return Smi::New(k##clazz##Cid); |
| 26 |
| 27 CLASS_LIST_WITH_NULL(COMPARE) |
| 28 |
| 29 #undef COMPARE |
| 30 #undef CLASS_LIST_WITH_NULL |
| 31 |
| 32 UNREACHABLE(); |
| 33 return Smi::New(-1); |
| 34 } |
| 35 |
16 } // namespace dart | 36 } // namespace dart |
OLD | NEW |