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 | |
36 } // namespace dart | 16 } // namespace dart |
OLD | NEW |