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

Side by Side Diff: src/small-pointer-list.h

Issue 430503007: Rename ASSERT* to DCHECK*. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: REBASE and fixes Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « src/serialize.cc ('k') | src/smart-pointers.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_SMALL_POINTER_LIST_H_ 5 #ifndef V8_SMALL_POINTER_LIST_H_
6 #define V8_SMALL_POINTER_LIST_H_ 6 #define V8_SMALL_POINTER_LIST_H_
7 7
8 #include "src/base/logging.h" 8 #include "src/base/logging.h"
9 #include "src/globals.h" 9 #include "src/globals.h"
10 #include "src/zone.h" 10 #include "src/zone.h"
(...skipping 20 matching lines...) Expand all
31 if (list()->capacity() >= capacity) return; 31 if (list()->capacity() >= capacity) return;
32 int old_length = list()->length(); 32 int old_length = list()->length();
33 list()->AddBlock(NULL, capacity - list()->capacity(), zone); 33 list()->AddBlock(NULL, capacity - list()->capacity(), zone);
34 list()->Rewind(old_length); 34 list()->Rewind(old_length);
35 return; 35 return;
36 } 36 }
37 PointerList* list = new(zone) PointerList(capacity, zone); 37 PointerList* list = new(zone) PointerList(capacity, zone);
38 if ((data_ & kTagMask) == kSingletonTag) { 38 if ((data_ & kTagMask) == kSingletonTag) {
39 list->Add(single_value(), zone); 39 list->Add(single_value(), zone);
40 } 40 }
41 ASSERT(IsAligned(reinterpret_cast<intptr_t>(list), kPointerAlignment)); 41 DCHECK(IsAligned(reinterpret_cast<intptr_t>(list), kPointerAlignment));
42 data_ = reinterpret_cast<intptr_t>(list) | kListTag; 42 data_ = reinterpret_cast<intptr_t>(list) | kListTag;
43 } 43 }
44 44
45 void Clear() { 45 void Clear() {
46 data_ = kEmptyTag; 46 data_ = kEmptyTag;
47 } 47 }
48 48
49 void Sort() { 49 void Sort() {
50 if ((data_ & kTagMask) == kListTag) { 50 if ((data_ & kTagMask) == kListTag) {
51 list()->Sort(compare_value); 51 list()->Sort(compare_value);
52 } 52 }
53 } 53 }
54 54
55 bool is_empty() const { return length() == 0; } 55 bool is_empty() const { return length() == 0; }
56 56
57 int length() const { 57 int length() const {
58 if ((data_ & kTagMask) == kEmptyTag) return 0; 58 if ((data_ & kTagMask) == kEmptyTag) return 0;
59 if ((data_ & kTagMask) == kSingletonTag) return 1; 59 if ((data_ & kTagMask) == kSingletonTag) return 1;
60 return list()->length(); 60 return list()->length();
61 } 61 }
62 62
63 void Add(T* pointer, Zone* zone) { 63 void Add(T* pointer, Zone* zone) {
64 ASSERT(IsAligned(reinterpret_cast<intptr_t>(pointer), kPointerAlignment)); 64 DCHECK(IsAligned(reinterpret_cast<intptr_t>(pointer), kPointerAlignment));
65 if ((data_ & kTagMask) == kEmptyTag) { 65 if ((data_ & kTagMask) == kEmptyTag) {
66 data_ = reinterpret_cast<intptr_t>(pointer) | kSingletonTag; 66 data_ = reinterpret_cast<intptr_t>(pointer) | kSingletonTag;
67 return; 67 return;
68 } 68 }
69 if ((data_ & kTagMask) == kSingletonTag) { 69 if ((data_ & kTagMask) == kSingletonTag) {
70 PointerList* list = new(zone) PointerList(2, zone); 70 PointerList* list = new(zone) PointerList(2, zone);
71 list->Add(single_value(), zone); 71 list->Add(single_value(), zone);
72 list->Add(pointer, zone); 72 list->Add(pointer, zone);
73 ASSERT(IsAligned(reinterpret_cast<intptr_t>(list), kPointerAlignment)); 73 DCHECK(IsAligned(reinterpret_cast<intptr_t>(list), kPointerAlignment));
74 data_ = reinterpret_cast<intptr_t>(list) | kListTag; 74 data_ = reinterpret_cast<intptr_t>(list) | kListTag;
75 return; 75 return;
76 } 76 }
77 list()->Add(pointer, zone); 77 list()->Add(pointer, zone);
78 } 78 }
79 79
80 // Note: returns T* and not T*& (unlike List from list.h). 80 // Note: returns T* and not T*& (unlike List from list.h).
81 // This makes the implementation simpler and more const correct. 81 // This makes the implementation simpler and more const correct.
82 T* at(int i) const { 82 T* at(int i) const {
83 ASSERT((data_ & kTagMask) != kEmptyTag); 83 DCHECK((data_ & kTagMask) != kEmptyTag);
84 if ((data_ & kTagMask) == kSingletonTag) { 84 if ((data_ & kTagMask) == kSingletonTag) {
85 ASSERT(i == 0); 85 DCHECK(i == 0);
86 return single_value(); 86 return single_value();
87 } 87 }
88 return list()->at(i); 88 return list()->at(i);
89 } 89 }
90 90
91 // See the note above. 91 // See the note above.
92 T* operator[](int i) const { return at(i); } 92 T* operator[](int i) const { return at(i); }
93 93
94 // Remove the given element from the list (if present). 94 // Remove the given element from the list (if present).
95 void RemoveElement(T* pointer) { 95 void RemoveElement(T* pointer) {
96 if ((data_ & kTagMask) == kEmptyTag) return; 96 if ((data_ & kTagMask) == kEmptyTag) return;
97 if ((data_ & kTagMask) == kSingletonTag) { 97 if ((data_ & kTagMask) == kSingletonTag) {
98 if (pointer == single_value()) { 98 if (pointer == single_value()) {
99 data_ = kEmptyTag; 99 data_ = kEmptyTag;
100 } 100 }
101 return; 101 return;
102 } 102 }
103 list()->RemoveElement(pointer); 103 list()->RemoveElement(pointer);
104 } 104 }
105 105
106 T* RemoveLast() { 106 T* RemoveLast() {
107 ASSERT((data_ & kTagMask) != kEmptyTag); 107 DCHECK((data_ & kTagMask) != kEmptyTag);
108 if ((data_ & kTagMask) == kSingletonTag) { 108 if ((data_ & kTagMask) == kSingletonTag) {
109 T* result = single_value(); 109 T* result = single_value();
110 data_ = kEmptyTag; 110 data_ = kEmptyTag;
111 return result; 111 return result;
112 } 112 }
113 return list()->RemoveLast(); 113 return list()->RemoveLast();
114 } 114 }
115 115
116 void Rewind(int pos) { 116 void Rewind(int pos) {
117 if ((data_ & kTagMask) == kEmptyTag) { 117 if ((data_ & kTagMask) == kEmptyTag) {
118 ASSERT(pos == 0); 118 DCHECK(pos == 0);
119 return; 119 return;
120 } 120 }
121 if ((data_ & kTagMask) == kSingletonTag) { 121 if ((data_ & kTagMask) == kSingletonTag) {
122 ASSERT(pos == 0 || pos == 1); 122 DCHECK(pos == 0 || pos == 1);
123 if (pos == 0) { 123 if (pos == 0) {
124 data_ = kEmptyTag; 124 data_ = kEmptyTag;
125 } 125 }
126 return; 126 return;
127 } 127 }
128 list()->Rewind(pos); 128 list()->Rewind(pos);
129 } 129 }
130 130
131 int CountOccurrences(T* pointer, int start, int end) const { 131 int CountOccurrences(T* pointer, int start, int end) const {
132 if ((data_ & kTagMask) == kEmptyTag) return 0; 132 if ((data_ & kTagMask) == kEmptyTag) return 0;
(...skipping 15 matching lines...) Expand all
148 148
149 static const intptr_t kEmptyTag = 1; 149 static const intptr_t kEmptyTag = 1;
150 static const intptr_t kSingletonTag = 0; 150 static const intptr_t kSingletonTag = 0;
151 static const intptr_t kListTag = 2; 151 static const intptr_t kListTag = 2;
152 static const intptr_t kTagMask = 3; 152 static const intptr_t kTagMask = 3;
153 static const intptr_t kValueMask = ~kTagMask; 153 static const intptr_t kValueMask = ~kTagMask;
154 154
155 STATIC_ASSERT(kTagMask + 1 <= kPointerAlignment); 155 STATIC_ASSERT(kTagMask + 1 <= kPointerAlignment);
156 156
157 T* single_value() const { 157 T* single_value() const {
158 ASSERT((data_ & kTagMask) == kSingletonTag); 158 DCHECK((data_ & kTagMask) == kSingletonTag);
159 STATIC_ASSERT(kSingletonTag == 0); 159 STATIC_ASSERT(kSingletonTag == 0);
160 return reinterpret_cast<T*>(data_); 160 return reinterpret_cast<T*>(data_);
161 } 161 }
162 162
163 PointerList* list() const { 163 PointerList* list() const {
164 ASSERT((data_ & kTagMask) == kListTag); 164 DCHECK((data_ & kTagMask) == kListTag);
165 return reinterpret_cast<PointerList*>(data_ & kValueMask); 165 return reinterpret_cast<PointerList*>(data_ & kValueMask);
166 } 166 }
167 167
168 intptr_t data_; 168 intptr_t data_;
169 169
170 DISALLOW_COPY_AND_ASSIGN(SmallPointerList); 170 DISALLOW_COPY_AND_ASSIGN(SmallPointerList);
171 }; 171 };
172 172
173 } } // namespace v8::internal 173 } } // namespace v8::internal
174 174
175 #endif // V8_SMALL_POINTER_LIST_H_ 175 #endif // V8_SMALL_POINTER_LIST_H_
OLDNEW
« no previous file with comments | « src/serialize.cc ('k') | src/smart-pointers.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698