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

Side by Side Diff: src/transitions-inl.h

Issue 801813002: Using PropertyKind in transitions instead of PropertyType. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 6 years 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
« no previous file with comments | « src/transitions.cc ('k') | test/cctest/test-transitions.cc » ('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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_TRANSITIONS_INL_H_ 5 #ifndef V8_TRANSITIONS_INL_H_
6 #define V8_TRANSITIONS_INL_H_ 6 #define V8_TRANSITIONS_INL_H_
7 7
8 #include "src/transitions.h" 8 #include "src/transitions.h"
9 9
10 namespace v8 { 10 namespace v8 {
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 if (!name->IsSymbol()) return false; 158 if (!name->IsSymbol()) return false;
159 Heap* heap = name->GetHeap(); 159 Heap* heap = name->GetHeap();
160 return name == heap->nonextensible_symbol() || 160 return name == heap->nonextensible_symbol() ||
161 name == heap->sealed_symbol() || name == heap->frozen_symbol() || 161 name == heap->sealed_symbol() || name == heap->frozen_symbol() ||
162 name == heap->elements_transition_symbol() || 162 name == heap->elements_transition_symbol() ||
163 name == heap->observed_symbol(); 163 name == heap->observed_symbol();
164 } 164 }
165 #endif 165 #endif
166 166
167 167
168 int TransitionArray::CompareKeys(Name* key1, uint32_t hash1, 168 int TransitionArray::CompareKeys(Name* key1, uint32_t hash1, PropertyKind kind1,
169 bool is_data_property1,
170 PropertyAttributes attributes1, Name* key2, 169 PropertyAttributes attributes1, Name* key2,
171 uint32_t hash2, bool is_data_property2, 170 uint32_t hash2, PropertyKind kind2,
172 PropertyAttributes attributes2) { 171 PropertyAttributes attributes2) {
173 int cmp = CompareNames(key1, hash1, key2, hash2); 172 int cmp = CompareNames(key1, hash1, key2, hash2);
174 if (cmp != 0) return cmp; 173 if (cmp != 0) return cmp;
175 174
176 return CompareDetails(is_data_property1, attributes1, is_data_property2, 175 return CompareDetails(kind1, attributes1, kind2, attributes2);
177 attributes2);
178 } 176 }
179 177
180 178
181 int TransitionArray::CompareNames(Name* key1, uint32_t hash1, Name* key2, 179 int TransitionArray::CompareNames(Name* key1, uint32_t hash1, Name* key2,
182 uint32_t hash2) { 180 uint32_t hash2) {
183 if (key1 != key2) { 181 if (key1 != key2) {
184 // In case of hash collisions key1 is always "less" than key2. 182 // In case of hash collisions key1 is always "less" than key2.
185 return hash1 <= hash2 ? -1 : 1; 183 return hash1 <= hash2 ? -1 : 1;
186 } 184 }
187 185
188 return 0; 186 return 0;
189 } 187 }
190 188
191 189
192 int TransitionArray::CompareDetails(bool is_data_property1, 190 int TransitionArray::CompareDetails(PropertyKind kind1,
193 PropertyAttributes attributes1, 191 PropertyAttributes attributes1,
194 bool is_data_property2, 192 PropertyKind kind2,
195 PropertyAttributes attributes2) { 193 PropertyAttributes attributes2) {
196 if (is_data_property1 != is_data_property2) { 194 if (kind1 != kind2) {
197 return static_cast<int>(is_data_property1) < 195 return static_cast<int>(kind1) < static_cast<int>(kind2) ? -1 : 1;
198 static_cast<int>(is_data_property2)
199 ? -1
200 : 1;
201 } 196 }
202 197
203 if (attributes1 != attributes2) { 198 if (attributes1 != attributes2) {
204 return static_cast<int>(attributes1) < static_cast<int>(attributes2) ? -1 199 return static_cast<int>(attributes1) < static_cast<int>(attributes2) ? -1
205 : 1; 200 : 1;
206 } 201 }
207 202
208 return 0; 203 return 0;
209 } 204 }
210 205
(...skipping 28 matching lines...) Expand all
239 234
240 235
241 #undef FIELD_ADDR 236 #undef FIELD_ADDR
242 #undef WRITE_FIELD 237 #undef WRITE_FIELD
243 #undef CONDITIONAL_WRITE_BARRIER 238 #undef CONDITIONAL_WRITE_BARRIER
244 239
245 240
246 } } // namespace v8::internal 241 } } // namespace v8::internal
247 242
248 #endif // V8_TRANSITIONS_INL_H_ 243 #endif // V8_TRANSITIONS_INL_H_
OLDNEW
« no previous file with comments | « src/transitions.cc ('k') | test/cctest/test-transitions.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698