OLD | NEW |
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_ELEMENTS_KIND_H_ | 5 #ifndef V8_ELEMENTS_KIND_H_ |
6 #define V8_ELEMENTS_KIND_H_ | 6 #define V8_ELEMENTS_KIND_H_ |
7 | 7 |
8 #include "src/checks.h" | 8 #include "src/checks.h" |
9 | 9 |
10 namespace v8 { | 10 namespace v8 { |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 } | 99 } |
100 | 100 |
101 | 101 |
102 inline bool IsFixedTypedArrayElementsKind(ElementsKind kind) { | 102 inline bool IsFixedTypedArrayElementsKind(ElementsKind kind) { |
103 return kind >= FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND && | 103 return kind >= FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND && |
104 kind <= LAST_FIXED_TYPED_ARRAY_ELEMENTS_KIND; | 104 kind <= LAST_FIXED_TYPED_ARRAY_ELEMENTS_KIND; |
105 } | 105 } |
106 | 106 |
107 | 107 |
108 inline bool IsFastElementsKind(ElementsKind kind) { | 108 inline bool IsFastElementsKind(ElementsKind kind) { |
109 ASSERT(FIRST_FAST_ELEMENTS_KIND == 0); | 109 DCHECK(FIRST_FAST_ELEMENTS_KIND == 0); |
110 return kind <= FAST_HOLEY_DOUBLE_ELEMENTS; | 110 return kind <= FAST_HOLEY_DOUBLE_ELEMENTS; |
111 } | 111 } |
112 | 112 |
113 | 113 |
114 inline bool IsTransitionElementsKind(ElementsKind kind) { | 114 inline bool IsTransitionElementsKind(ElementsKind kind) { |
115 return IsFastElementsKind(kind) || IsFixedTypedArrayElementsKind(kind); | 115 return IsFastElementsKind(kind) || IsFixedTypedArrayElementsKind(kind); |
116 } | 116 } |
117 | 117 |
118 | 118 |
119 inline bool IsFastDoubleElementsKind(ElementsKind kind) { | 119 inline bool IsFastDoubleElementsKind(ElementsKind kind) { |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 return FAST_HOLEY_DOUBLE_ELEMENTS; | 202 return FAST_HOLEY_DOUBLE_ELEMENTS; |
203 } | 203 } |
204 if (packed_kind == FAST_ELEMENTS) { | 204 if (packed_kind == FAST_ELEMENTS) { |
205 return FAST_HOLEY_ELEMENTS; | 205 return FAST_HOLEY_ELEMENTS; |
206 } | 206 } |
207 return packed_kind; | 207 return packed_kind; |
208 } | 208 } |
209 | 209 |
210 | 210 |
211 inline ElementsKind FastSmiToObjectElementsKind(ElementsKind from_kind) { | 211 inline ElementsKind FastSmiToObjectElementsKind(ElementsKind from_kind) { |
212 ASSERT(IsFastSmiElementsKind(from_kind)); | 212 DCHECK(IsFastSmiElementsKind(from_kind)); |
213 return (from_kind == FAST_SMI_ELEMENTS) | 213 return (from_kind == FAST_SMI_ELEMENTS) |
214 ? FAST_ELEMENTS | 214 ? FAST_ELEMENTS |
215 : FAST_HOLEY_ELEMENTS; | 215 : FAST_HOLEY_ELEMENTS; |
216 } | 216 } |
217 | 217 |
218 | 218 |
219 inline bool IsSimpleMapChangeTransition(ElementsKind from_kind, | 219 inline bool IsSimpleMapChangeTransition(ElementsKind from_kind, |
220 ElementsKind to_kind) { | 220 ElementsKind to_kind) { |
221 return (GetHoleyElementsKind(from_kind) == to_kind) || | 221 return (GetHoleyElementsKind(from_kind) == to_kind) || |
222 (IsFastSmiElementsKind(from_kind) && | 222 (IsFastSmiElementsKind(from_kind) && |
(...skipping 20 matching lines...) Expand all Loading... |
243 bool allow_only_packed) { | 243 bool allow_only_packed) { |
244 return IsFastElementsKind(elements_kind) && | 244 return IsFastElementsKind(elements_kind) && |
245 (elements_kind != TERMINAL_FAST_ELEMENTS_KIND && | 245 (elements_kind != TERMINAL_FAST_ELEMENTS_KIND && |
246 (!allow_only_packed || elements_kind != FAST_ELEMENTS)); | 246 (!allow_only_packed || elements_kind != FAST_ELEMENTS)); |
247 } | 247 } |
248 | 248 |
249 | 249 |
250 } } // namespace v8::internal | 250 } } // namespace v8::internal |
251 | 251 |
252 #endif // V8_ELEMENTS_KIND_H_ | 252 #endif // V8_ELEMENTS_KIND_H_ |
OLD | NEW |