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

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

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

Powered by Google App Engine
This is Rietveld 408576698