Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(302)

Side by Side Diff: runtime/vm/hash_map_test.cc

Issue 2623613003: Implemented basic heap memory allocation tracking in MallocHooks using hooks registered with tcmall… (Closed)
Patch Set: Implemented basic heap memory allocation tracking in MallocHooks using hooks registered with tcmall… Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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/unit_test.h" 6 #include "vm/unit_test.h"
7 #include "vm/hash_map.h" 7 #include "vm/hash_map.h"
8 8
9 namespace dart { 9 namespace dart {
10 10
(...skipping 13 matching lines...) Expand all
24 EXPECT(map.IsEmpty()); 24 EXPECT(map.IsEmpty());
25 TestValue v1(0); 25 TestValue v1(0);
26 TestValue v2(1); 26 TestValue v2(1);
27 TestValue v3(0); 27 TestValue v3(0);
28 map.Insert(&v1); 28 map.Insert(&v1);
29 EXPECT(map.LookupValue(&v1) == &v1); 29 EXPECT(map.LookupValue(&v1) == &v1);
30 map.Insert(&v2); 30 map.Insert(&v2);
31 EXPECT(map.LookupValue(&v1) == &v1); 31 EXPECT(map.LookupValue(&v1) == &v1);
32 EXPECT(map.LookupValue(&v2) == &v2); 32 EXPECT(map.LookupValue(&v2) == &v2);
33 EXPECT(map.LookupValue(&v3) == &v1); 33 EXPECT(map.LookupValue(&v3) == &v1);
34 EXPECT(map.Remove(&v1));
35 EXPECT(map.Lookup(&v1) == NULL);
36 map.Insert(&v1);
34 DirectChainedHashMap<PointerKeyValueTrait<TestValue> > map2(map); 37 DirectChainedHashMap<PointerKeyValueTrait<TestValue> > map2(map);
35 EXPECT(map2.LookupValue(&v1) == &v1); 38 EXPECT(map2.LookupValue(&v1) == &v1);
36 EXPECT(map2.LookupValue(&v2) == &v2); 39 EXPECT(map2.LookupValue(&v2) == &v2);
37 EXPECT(map2.LookupValue(&v3) == &v1); 40 EXPECT(map2.LookupValue(&v3) == &v1);
38 } 41 }
39 42
40 43
44 TEST_CASE(DirectChainedHashMapInsertRemove) {
45 DirectChainedHashMap<PointerKeyValueTrait<TestValue> > map;
46 EXPECT(map.IsEmpty());
47 TestValue v1(1);
48 TestValue v2(3); // Note: v1, v2, v3 should have the same hash.
49 TestValue v3(5);
50
51 // Start with adding and removing the same element.
52 map.Insert(&v1);
53 EXPECT(map.LookupValue(&v1) == &v1);
54 EXPECT(map.Remove(&v1));
55 EXPECT(map.Lookup(&v1) == NULL);
56
57 // Inserting v2 first should put it at the head of the list.
58 map.Insert(&v2);
59 map.Insert(&v1);
60 EXPECT(map.LookupValue(&v2) == &v2);
61 EXPECT(map.LookupValue(&v1) == &v1);
62
63 // Check to see if removing the head of the list causes issues.
64 EXPECT(map.Remove(&v2));
65 EXPECT(map.Lookup(&v2) == NULL);
66 EXPECT(map.LookupValue(&v1) == &v1);
67
68 // Reinsert v2, which will place it at the back of the hash map list.
69 map.Insert(&v2);
70 EXPECT(map.LookupValue(&v2) == &v2);
71
72 // Remove from the back of the hash map list.
73 EXPECT(map.Remove(&v2));
74 EXPECT(map.Lookup(&v2) == NULL);
75 EXPECT(map.Remove(&v1));
76 EXPECT(map.Lookup(&v1) == NULL);
77
78 // Check to see that removing an invalid element returns false.
79 EXPECT(!map.Remove(&v1));
80
81 // One last case: remove from the middle of a hash map list.
82 map.Insert(&v1);
83 map.Insert(&v2);
84 map.Insert(&v3);
85
86 EXPECT(map.LookupValue(&v1) == &v1);
87 EXPECT(map.LookupValue(&v2) == &v2);
88 EXPECT(map.LookupValue(&v3) == &v3);
89
90 EXPECT(map.Remove(&v2));
91 EXPECT(map.LookupValue(&v1) == &v1);
92 EXPECT(map.Lookup(&v2) == NULL);
93 EXPECT(map.LookupValue(&v3) == &v3);
94
95 EXPECT(map.Remove(&v1));
96 EXPECT(map.Remove(&v3));
97
98 EXPECT(map.IsEmpty());
99 }
100
101
41 TEST_CASE(MallocDirectChainedHashMap) { 102 TEST_CASE(MallocDirectChainedHashMap) {
42 MallocDirectChainedHashMap<PointerKeyValueTrait<TestValue> > map; 103 MallocDirectChainedHashMap<PointerKeyValueTrait<TestValue> > map;
43 EXPECT(map.IsEmpty()); 104 EXPECT(map.IsEmpty());
44 TestValue v1(0); 105 TestValue v1(0);
45 TestValue v2(1); 106 TestValue v2(1);
46 TestValue v3(0); 107 TestValue v3(0);
47 map.Insert(&v1); 108 map.Insert(&v1);
48 EXPECT(map.LookupValue(&v1) == &v1); 109 EXPECT(map.LookupValue(&v1) == &v1);
49 map.Insert(&v2); 110 map.Insert(&v2);
50 EXPECT(map.LookupValue(&v1) == &v1); 111 EXPECT(map.LookupValue(&v1) == &v1);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 } 171 }
111 count++; 172 count++;
112 sum += p->second(); 173 sum += p->second();
113 } 174 }
114 175
115 EXPECT(count == 5); 176 EXPECT(count == 5);
116 EXPECT(sum == 15); 177 EXPECT(sum == 15);
117 } 178 }
118 179
119 } // namespace dart 180 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698