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

Side by Side Diff: src/elements-kind.h

Issue 1254623002: Remove ExternalArray, derived types, and element kinds (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: updates Created 5 years, 5 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 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 14 matching lines...) Expand all
25 // The "fast" kind for unwrapped, non-tagged double values. 25 // The "fast" kind for unwrapped, non-tagged double values.
26 FAST_DOUBLE_ELEMENTS, 26 FAST_DOUBLE_ELEMENTS,
27 FAST_HOLEY_DOUBLE_ELEMENTS, 27 FAST_HOLEY_DOUBLE_ELEMENTS,
28 28
29 // The "slow" kind. 29 // The "slow" kind.
30 DICTIONARY_ELEMENTS, 30 DICTIONARY_ELEMENTS,
31 31
32 FAST_SLOPPY_ARGUMENTS_ELEMENTS, 32 FAST_SLOPPY_ARGUMENTS_ELEMENTS,
33 SLOW_SLOPPY_ARGUMENTS_ELEMENTS, 33 SLOW_SLOPPY_ARGUMENTS_ELEMENTS,
34 34
35 // The "fast" kind for external arrays
36 EXTERNAL_INT8_ELEMENTS,
37 EXTERNAL_UINT8_ELEMENTS,
38 EXTERNAL_INT16_ELEMENTS,
39 EXTERNAL_UINT16_ELEMENTS,
40 EXTERNAL_INT32_ELEMENTS,
41 EXTERNAL_UINT32_ELEMENTS,
42 EXTERNAL_FLOAT32_ELEMENTS,
43 EXTERNAL_FLOAT64_ELEMENTS,
44 EXTERNAL_UINT8_CLAMPED_ELEMENTS,
45
46 // Fixed typed arrays 35 // Fixed typed arrays
47 UINT8_ELEMENTS, 36 UINT8_ELEMENTS,
48 INT8_ELEMENTS, 37 INT8_ELEMENTS,
49 UINT16_ELEMENTS, 38 UINT16_ELEMENTS,
50 INT16_ELEMENTS, 39 INT16_ELEMENTS,
51 UINT32_ELEMENTS, 40 UINT32_ELEMENTS,
52 INT32_ELEMENTS, 41 INT32_ELEMENTS,
53 FLOAT32_ELEMENTS, 42 FLOAT32_ELEMENTS,
54 FLOAT64_ELEMENTS, 43 FLOAT64_ELEMENTS,
55 UINT8_CLAMPED_ELEMENTS, 44 UINT8_CLAMPED_ELEMENTS,
56 45
57 // Derived constants from ElementsKind 46 // Derived constants from ElementsKind
58 FIRST_ELEMENTS_KIND = FAST_SMI_ELEMENTS, 47 FIRST_ELEMENTS_KIND = FAST_SMI_ELEMENTS,
59 LAST_ELEMENTS_KIND = UINT8_CLAMPED_ELEMENTS, 48 LAST_ELEMENTS_KIND = UINT8_CLAMPED_ELEMENTS,
60 FIRST_FAST_ELEMENTS_KIND = FAST_SMI_ELEMENTS, 49 FIRST_FAST_ELEMENTS_KIND = FAST_SMI_ELEMENTS,
61 LAST_FAST_ELEMENTS_KIND = FAST_HOLEY_DOUBLE_ELEMENTS, 50 LAST_FAST_ELEMENTS_KIND = FAST_HOLEY_DOUBLE_ELEMENTS,
62 FIRST_EXTERNAL_ARRAY_ELEMENTS_KIND = EXTERNAL_INT8_ELEMENTS,
63 LAST_EXTERNAL_ARRAY_ELEMENTS_KIND = EXTERNAL_UINT8_CLAMPED_ELEMENTS,
64 FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND = UINT8_ELEMENTS, 51 FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND = UINT8_ELEMENTS,
65 LAST_FIXED_TYPED_ARRAY_ELEMENTS_KIND = UINT8_CLAMPED_ELEMENTS, 52 LAST_FIXED_TYPED_ARRAY_ELEMENTS_KIND = UINT8_CLAMPED_ELEMENTS,
66 TERMINAL_FAST_ELEMENTS_KIND = FAST_HOLEY_ELEMENTS 53 TERMINAL_FAST_ELEMENTS_KIND = FAST_HOLEY_ELEMENTS
67 }; 54 };
68 55
69 const int kElementsKindCount = LAST_ELEMENTS_KIND - FIRST_ELEMENTS_KIND + 1; 56 const int kElementsKindCount = LAST_ELEMENTS_KIND - FIRST_ELEMENTS_KIND + 1;
70 const int kFastElementsKindCount = LAST_FAST_ELEMENTS_KIND - 57 const int kFastElementsKindCount = LAST_FAST_ELEMENTS_KIND -
71 FIRST_FAST_ELEMENTS_KIND + 1; 58 FIRST_FAST_ELEMENTS_KIND + 1;
72 59
73 // The number to add to a packed elements kind to reach a holey elements kind 60 // The number to add to a packed elements kind to reach a holey elements kind
(...skipping 15 matching lines...) Expand all
89 return kind == DICTIONARY_ELEMENTS; 76 return kind == DICTIONARY_ELEMENTS;
90 } 77 }
91 78
92 79
93 inline bool IsSloppyArgumentsElements(ElementsKind kind) { 80 inline bool IsSloppyArgumentsElements(ElementsKind kind) {
94 return kind == FAST_SLOPPY_ARGUMENTS_ELEMENTS || 81 return kind == FAST_SLOPPY_ARGUMENTS_ELEMENTS ||
95 kind == SLOW_SLOPPY_ARGUMENTS_ELEMENTS; 82 kind == SLOW_SLOPPY_ARGUMENTS_ELEMENTS;
96 } 83 }
97 84
98 85
99 inline bool IsExternalArrayElementsKind(ElementsKind kind) { 86 inline bool IsFixedTypedArrayElementsKind(ElementsKind kind) {
100 return kind >= FIRST_EXTERNAL_ARRAY_ELEMENTS_KIND && 87 return kind >= FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND &&
101 kind <= LAST_EXTERNAL_ARRAY_ELEMENTS_KIND; 88 kind <= LAST_FIXED_TYPED_ARRAY_ELEMENTS_KIND;
102 } 89 }
103 90
104 91
105 inline bool IsTerminalElementsKind(ElementsKind kind) { 92 inline bool IsTerminalElementsKind(ElementsKind kind) {
106 return kind == TERMINAL_FAST_ELEMENTS_KIND || 93 return kind == TERMINAL_FAST_ELEMENTS_KIND ||
107 IsExternalArrayElementsKind(kind); 94 IsFixedTypedArrayElementsKind(kind);
108 } 95 }
109 96
110 97
111 inline bool IsFixedTypedArrayElementsKind(ElementsKind kind) {
112 return kind >= FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND &&
113 kind <= LAST_FIXED_TYPED_ARRAY_ELEMENTS_KIND;
114 }
115
116
117 inline bool IsFastElementsKind(ElementsKind kind) { 98 inline bool IsFastElementsKind(ElementsKind kind) {
118 DCHECK(FIRST_FAST_ELEMENTS_KIND == 0); 99 DCHECK(FIRST_FAST_ELEMENTS_KIND == 0);
119 return kind <= FAST_HOLEY_DOUBLE_ELEMENTS; 100 return kind <= FAST_HOLEY_DOUBLE_ELEMENTS;
120 } 101 }
121 102
122 103
123 inline bool IsTransitionElementsKind(ElementsKind kind) { 104 inline bool IsTransitionElementsKind(ElementsKind kind) {
124 return IsFastElementsKind(kind) || IsFixedTypedArrayElementsKind(kind) || 105 return IsFastElementsKind(kind) || IsFixedTypedArrayElementsKind(kind) ||
125 kind == FAST_SLOPPY_ARGUMENTS_ELEMENTS; 106 kind == FAST_SLOPPY_ARGUMENTS_ELEMENTS;
126 } 107 }
127 108
128 109
129 inline bool IsFastDoubleElementsKind(ElementsKind kind) { 110 inline bool IsFastDoubleElementsKind(ElementsKind kind) {
130 return kind == FAST_DOUBLE_ELEMENTS || 111 return kind == FAST_DOUBLE_ELEMENTS ||
131 kind == FAST_HOLEY_DOUBLE_ELEMENTS; 112 kind == FAST_HOLEY_DOUBLE_ELEMENTS;
132 } 113 }
133 114
134 115
135 inline bool IsExternalFloatOrDoubleElementsKind(ElementsKind kind) {
136 return kind == EXTERNAL_FLOAT64_ELEMENTS ||
137 kind == EXTERNAL_FLOAT32_ELEMENTS;
138 }
139
140
141 inline bool IsFixedFloatElementsKind(ElementsKind kind) { 116 inline bool IsFixedFloatElementsKind(ElementsKind kind) {
142 return kind == FLOAT32_ELEMENTS || kind == FLOAT64_ELEMENTS; 117 return kind == FLOAT32_ELEMENTS || kind == FLOAT64_ELEMENTS;
143 } 118 }
144 119
145 120
146 inline bool IsDoubleOrFloatElementsKind(ElementsKind kind) { 121 inline bool IsDoubleOrFloatElementsKind(ElementsKind kind) {
147 return IsFastDoubleElementsKind(kind) || 122 return IsFastDoubleElementsKind(kind) || IsFixedFloatElementsKind(kind);
148 IsExternalFloatOrDoubleElementsKind(kind) ||
149 IsFixedFloatElementsKind(kind);
150 } 123 }
151 124
152 125
153 inline bool IsFastSmiOrObjectElementsKind(ElementsKind kind) { 126 inline bool IsFastSmiOrObjectElementsKind(ElementsKind kind) {
154 return kind == FAST_SMI_ELEMENTS || 127 return kind == FAST_SMI_ELEMENTS ||
155 kind == FAST_HOLEY_SMI_ELEMENTS || 128 kind == FAST_HOLEY_SMI_ELEMENTS ||
156 kind == FAST_ELEMENTS || 129 kind == FAST_ELEMENTS ||
157 kind == FAST_HOLEY_ELEMENTS; 130 kind == FAST_HOLEY_ELEMENTS;
158 } 131 }
159 132
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 213
241 inline bool IsTransitionableFastElementsKind(ElementsKind from_kind) { 214 inline bool IsTransitionableFastElementsKind(ElementsKind from_kind) {
242 return IsFastElementsKind(from_kind) && 215 return IsFastElementsKind(from_kind) &&
243 from_kind != TERMINAL_FAST_ELEMENTS_KIND; 216 from_kind != TERMINAL_FAST_ELEMENTS_KIND;
244 } 217 }
245 218
246 219
247 } } // namespace v8::internal 220 } } // namespace v8::internal
248 221
249 #endif // V8_ELEMENTS_KIND_H_ 222 #endif // V8_ELEMENTS_KIND_H_
OLDNEW
« no previous file with comments | « src/elements.cc ('k') | src/elements-kind.cc » ('j') | src/heap/heap.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698