OLD | NEW |
---|---|
(Empty) | |
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 | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 #include "platform/assert.h" | |
6 | |
7 #include "vm/assembler.h" | |
8 #include "vm/bootstrap_natives.h" | |
9 #include "vm/exceptions.h" | |
10 #include "vm/flags.h" | |
11 #include "vm/native_entry.h" | |
12 #include "vm/object.h" | |
13 | |
14 namespace dart { | |
15 | |
16 DEFINE_FLAG(bool, use_internal_hash_map, false, "Use internal hash map."); | |
17 | |
18 DEFINE_NATIVE_ENTRY(LinkedHashMap_allocate, 1) { | |
19 const TypeArguments& type_arguments = | |
20 TypeArguments::CheckedHandle(arguments->NativeArgAt(0)); | |
21 const LinkedHashMap& map = | |
22 LinkedHashMap::Handle(LinkedHashMap::New()); | |
23 map.SetTypeArguments(type_arguments); | |
24 return map.raw(); | |
25 } | |
26 | |
27 | |
28 DEFINE_NATIVE_ENTRY(LinkedHashMap_getLength, 1) { | |
29 const LinkedHashMap& map = | |
30 LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0)); | |
31 return Smi::New(map.Length()); | |
32 } | |
33 | |
34 | |
35 DEFINE_NATIVE_ENTRY(LinkedHashMap_lookUp, 2) { | |
36 const LinkedHashMap& map = | |
37 LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0)); | |
38 GET_NON_NULL_NATIVE_ARGUMENT(Instance, key, arguments->NativeArgAt(1)); | |
39 return map.LookUp(key); | |
40 } | |
41 | |
42 | |
43 DEFINE_NATIVE_ENTRY(LinkedHashMap_containsKey, 2) { | |
44 const LinkedHashMap& map = | |
45 LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0)); | |
46 GET_NON_NULL_NATIVE_ARGUMENT(Instance, key, arguments->NativeArgAt(1)); | |
47 return Bool::Get(map.Contains(key)).raw(); | |
48 } | |
49 | |
50 | |
51 DEFINE_NATIVE_ENTRY(LinkedHashMap_insertOrUpdate, 3) { | |
52 LinkedHashMap& map = | |
53 LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0)); | |
54 GET_NON_NULL_NATIVE_ARGUMENT(Instance, key, arguments->NativeArgAt(1)); | |
55 GET_NON_NULL_NATIVE_ARGUMENT(Instance, value, arguments->NativeArgAt(2)); | |
56 map.InsertOrUpdate(key, value); | |
57 return Object::null(); | |
58 } | |
59 | |
60 | |
61 DEFINE_NATIVE_ENTRY(LinkedHashMap_remove, 2) { | |
62 const LinkedHashMap& map = | |
63 LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0)); | |
64 GET_NON_NULL_NATIVE_ARGUMENT(Instance, key, arguments->NativeArgAt(1)); | |
65 return map.Remove(key); | |
66 } | |
67 | |
68 | |
69 DEFINE_NATIVE_ENTRY(LinkedHashMap_clear, 1) { | |
70 const LinkedHashMap& map = | |
71 LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0)); | |
72 map.Clear(); | |
73 return Object::null(); | |
74 } | |
75 | |
76 | |
77 DEFINE_NATIVE_ENTRY(LinkedHashMap_toArray, 1) { | |
78 const LinkedHashMap& map = | |
79 LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0)); | |
80 return map.ToArray(); | |
81 } | |
82 | |
83 | |
84 DEFINE_NATIVE_ENTRY(LinkedHashMap_getModMark, 2) { | |
85 const LinkedHashMap& map = | |
86 LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0)); | |
87 GET_NON_NULL_NATIVE_ARGUMENT(Bool, create, arguments->NativeArgAt(1)); | |
88 return map.GetModificationMark(create.value()); | |
89 } | |
90 | |
91 | |
92 DEFINE_NATIVE_ENTRY(LinkedHashMap_useInternal, 0) { | |
93 return FLAG_use_internal_hash_map ? Bool::True().raw() : Bool::False().raw(); | |
siva
2014/07/24 20:47:11
return Bool::Get(FLAG_use_internal_hash_map).raw()
koda
2014/07/25 20:03:17
Done.
| |
94 } | |
95 | |
96 } // namespace dart | |
OLD | NEW |