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

Side by Side Diff: src/interpreter/bytecode-traits.h

Issue 2041913002: [interpreter] Remove OperandScale from front stages of pipeline. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase Created 4 years, 6 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/interpreter/bytecode-register-optimizer.cc ('k') | src/interpreter/bytecodes.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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_INTERPRETER_BYTECODE_TRAITS_H_ 5 #ifndef V8_INTERPRETER_BYTECODE_TRAITS_H_
6 #define V8_INTERPRETER_BYTECODE_TRAITS_H_ 6 #define V8_INTERPRETER_BYTECODE_TRAITS_H_
7 7
8 #include "src/interpreter/bytecodes.h" 8 #include "src/interpreter/bytecodes.h"
9 9
10 namespace v8 { 10 namespace v8 {
(...skipping 12 matching lines...) Expand all
23 struct OperandTypeInfoTraits<OperandTypeInfo::k##Name> { \ 23 struct OperandTypeInfoTraits<OperandTypeInfo::k##Name> { \
24 static const bool kIsScalable = Scalable; \ 24 static const bool kIsScalable = Scalable; \
25 static const bool kIsUnsigned = Unsigned; \ 25 static const bool kIsUnsigned = Unsigned; \
26 static const OperandSize kUnscaledSize = BaseSize; \ 26 static const OperandSize kUnscaledSize = BaseSize; \
27 }; 27 };
28 OPERAND_TYPE_INFO_LIST(DECLARE_OPERAND_TYPE_INFO) 28 OPERAND_TYPE_INFO_LIST(DECLARE_OPERAND_TYPE_INFO)
29 #undef DECLARE_OPERAND_TYPE_INFO 29 #undef DECLARE_OPERAND_TYPE_INFO
30 30
31 template <OperandType> 31 template <OperandType>
32 struct OperandTraits { 32 struct OperandTraits {
33 typedef OperandTypeInfoTraits<OperandTypeInfo::kNone> TypeInfo; 33 typedef OperandTypeInfoTraits<OperandTypeInfo::kNone> TypeInfoTraits;
34 static const OperandTypeInfo kOperandTypeInfo = OperandTypeInfo::kNone;
34 }; 35 };
35 36
36 #define DECLARE_OPERAND_TYPE_TRAITS(Name, InfoType) \ 37 #define DECLARE_OPERAND_TYPE_TRAITS(Name, InfoType) \
37 template <> \ 38 template <> \
38 struct OperandTraits<OperandType::k##Name> { \ 39 struct OperandTraits<OperandType::k##Name> { \
39 typedef OperandTypeInfoTraits<InfoType> TypeInfo; \ 40 typedef OperandTypeInfoTraits<InfoType> TypeInfoTraits; \
41 static const OperandTypeInfo kOperandTypeInfo = InfoType; \
40 }; 42 };
41 OPERAND_TYPE_LIST(DECLARE_OPERAND_TYPE_TRAITS) 43 OPERAND_TYPE_LIST(DECLARE_OPERAND_TYPE_TRAITS)
42 #undef DECLARE_OPERAND_TYPE_TRAITS 44 #undef DECLARE_OPERAND_TYPE_TRAITS
43 45
44 template <OperandType operand_type, OperandScale operand_scale> 46 template <OperandType operand_type, OperandScale operand_scale>
45 struct OperandScaler { 47 struct OperandScaler {
46 template <bool, OperandSize, OperandScale> 48 template <bool, OperandSize, OperandScale>
47 struct Helper { 49 struct Helper {
48 static const int kSize = 0; 50 static const int kSize = 0;
49 }; 51 };
50 template <OperandSize size, OperandScale scale> 52 template <OperandSize size, OperandScale scale>
51 struct Helper<false, size, scale> { 53 struct Helper<false, size, scale> {
52 static const int kSize = static_cast<int>(size); 54 static const int kSize = static_cast<int>(size);
53 }; 55 };
54 template <OperandSize size, OperandScale scale> 56 template <OperandSize size, OperandScale scale>
55 struct Helper<true, size, scale> { 57 struct Helper<true, size, scale> {
56 static const int kSize = static_cast<int>(size) * static_cast<int>(scale); 58 static const int kSize = static_cast<int>(size) * static_cast<int>(scale);
57 }; 59 };
58 60
59 static const int kSize = 61 static const int kSize =
60 Helper<OperandTraits<operand_type>::TypeInfo::kIsScalable, 62 Helper<OperandTraits<operand_type>::TypeInfoTraits::kIsScalable,
61 OperandTraits<operand_type>::TypeInfo::kUnscaledSize, 63 OperandTraits<operand_type>::TypeInfoTraits::kUnscaledSize,
62 operand_scale>::kSize; 64 operand_scale>::kSize;
63 static const OperandSize kOperandSize = static_cast<OperandSize>(kSize); 65 static const OperandSize kOperandSize = static_cast<OperandSize>(kSize);
64 }; 66 };
65 67
66 template <OperandType> 68 template <OperandType>
67 struct RegisterOperandTraits { 69 struct RegisterOperandTraits {
68 static const int kIsRegisterOperand = 0; 70 static const int kIsRegisterOperand = 0;
69 }; 71 };
70 72
71 #define DECLARE_REGISTER_OPERAND(Name, _) \ 73 #define DECLARE_REGISTER_OPERAND(Name, _) \
(...skipping 10 matching lines...) Expand all
82 template <AccumulatorUse accumulator_use, OperandType operand_0, 84 template <AccumulatorUse accumulator_use, OperandType operand_0,
83 OperandType operand_1, OperandType operand_2, OperandType operand_3> 85 OperandType operand_1, OperandType operand_2, OperandType operand_3>
84 struct BytecodeTraits<accumulator_use, operand_0, operand_1, operand_2, 86 struct BytecodeTraits<accumulator_use, operand_0, operand_1, operand_2,
85 operand_3> { 87 operand_3> {
86 static const OperandType* GetOperandTypes() { 88 static const OperandType* GetOperandTypes() {
87 static const OperandType operand_types[] = {operand_0, operand_1, operand_2, 89 static const OperandType operand_types[] = {operand_0, operand_1, operand_2,
88 operand_3, OperandType::kNone}; 90 operand_3, OperandType::kNone};
89 return operand_types; 91 return operand_types;
90 } 92 }
91 93
94 static const OperandTypeInfo* GetOperandTypeInfos() {
95 static const OperandTypeInfo operand_type_infos[] = {
96 OperandTraits<operand_0>::kOperandTypeInfo,
97 OperandTraits<operand_1>::kOperandTypeInfo,
98 OperandTraits<operand_2>::kOperandTypeInfo,
99 OperandTraits<operand_3>::kOperandTypeInfo, OperandTypeInfo::kNone};
100 return operand_type_infos;
101 }
102
92 static const OperandSize* GetOperandSizes(OperandScale operand_scale) { 103 static const OperandSize* GetOperandSizes(OperandScale operand_scale) {
93 switch (operand_scale) { 104 switch (operand_scale) {
94 #define CASE(Name, _) \ 105 #define CASE(Name, _) \
95 case OperandScale::k##Name: { \ 106 case OperandScale::k##Name: { \
96 static const OperandSize kOperandSizes[] = { \ 107 static const OperandSize kOperandSizes[] = { \
97 OperandScaler<operand_0, OperandScale::k##Name>::kOperandSize, \ 108 OperandScaler<operand_0, OperandScale::k##Name>::kOperandSize, \
98 OperandScaler<operand_1, OperandScale::k##Name>::kOperandSize, \ 109 OperandScaler<operand_1, OperandScale::k##Name>::kOperandSize, \
99 OperandScaler<operand_2, OperandScale::k##Name>::kOperandSize, \ 110 OperandScaler<operand_2, OperandScale::k##Name>::kOperandSize, \
100 OperandScaler<operand_3, OperandScale::k##Name>::kOperandSize, \ 111 OperandScaler<operand_3, OperandScale::k##Name>::kOperandSize, \
101 }; \ 112 }; \
102 return kOperandSizes; \ 113 return kOperandSizes; \
103 } 114 }
104 OPERAND_SCALE_LIST(CASE) 115 OPERAND_SCALE_LIST(CASE)
105 #undef CASE 116 #undef CASE
106 } 117 }
107 UNREACHABLE(); 118 UNREACHABLE();
108 return nullptr; 119 return nullptr;
109 } 120 }
110 121
111 template <OperandType ot> 122 template <OperandType ot>
112 static inline bool HasAnyOperandsOfType() { 123 static inline bool HasAnyOperandsOfType() {
113 return operand_0 == ot || operand_1 == ot || operand_2 == ot || 124 return operand_0 == ot || operand_1 == ot || operand_2 == ot ||
114 operand_3 == ot; 125 operand_3 == ot;
115 } 126 }
116 127
117 static inline bool IsScalable() { 128 static inline bool IsScalable() {
118 return (OperandTraits<operand_0>::TypeInfo::kIsScalable | 129 return (OperandTraits<operand_0>::TypeInfoTraits::kIsScalable |
119 OperandTraits<operand_1>::TypeInfo::kIsScalable | 130 OperandTraits<operand_1>::TypeInfoTraits::kIsScalable |
120 OperandTraits<operand_2>::TypeInfo::kIsScalable | 131 OperandTraits<operand_2>::TypeInfoTraits::kIsScalable |
121 OperandTraits<operand_3>::TypeInfo::kIsScalable); 132 OperandTraits<operand_3>::TypeInfoTraits::kIsScalable);
122 } 133 }
123 134
124 static const AccumulatorUse kAccumulatorUse = accumulator_use; 135 static const AccumulatorUse kAccumulatorUse = accumulator_use;
125 static const int kOperandCount = 4; 136 static const int kOperandCount = 4;
126 static const int kRegisterOperandCount = 137 static const int kRegisterOperandCount =
127 RegisterOperandTraits<operand_0>::kIsRegisterOperand + 138 RegisterOperandTraits<operand_0>::kIsRegisterOperand +
128 RegisterOperandTraits<operand_1>::kIsRegisterOperand + 139 RegisterOperandTraits<operand_1>::kIsRegisterOperand +
129 RegisterOperandTraits<operand_2>::kIsRegisterOperand + 140 RegisterOperandTraits<operand_2>::kIsRegisterOperand +
130 RegisterOperandTraits<operand_3>::kIsRegisterOperand; 141 RegisterOperandTraits<operand_3>::kIsRegisterOperand;
131 static const int kRegisterOperandBitmap = 142 static const int kRegisterOperandBitmap =
132 RegisterOperandTraits<operand_0>::kIsRegisterOperand + 143 RegisterOperandTraits<operand_0>::kIsRegisterOperand +
133 (RegisterOperandTraits<operand_1>::kIsRegisterOperand << 1) + 144 (RegisterOperandTraits<operand_1>::kIsRegisterOperand << 1) +
134 (RegisterOperandTraits<operand_2>::kIsRegisterOperand << 2) + 145 (RegisterOperandTraits<operand_2>::kIsRegisterOperand << 2) +
135 (RegisterOperandTraits<operand_3>::kIsRegisterOperand << 3); 146 (RegisterOperandTraits<operand_3>::kIsRegisterOperand << 3);
136 }; 147 };
137 148
138 template <AccumulatorUse accumulator_use, OperandType operand_0, 149 template <AccumulatorUse accumulator_use, OperandType operand_0,
139 OperandType operand_1, OperandType operand_2> 150 OperandType operand_1, OperandType operand_2>
140 struct BytecodeTraits<accumulator_use, operand_0, operand_1, operand_2> { 151 struct BytecodeTraits<accumulator_use, operand_0, operand_1, operand_2> {
141 static const OperandType* GetOperandTypes() { 152 static const OperandType* GetOperandTypes() {
142 static const OperandType operand_types[] = {operand_0, operand_1, operand_2, 153 static const OperandType operand_types[] = {operand_0, operand_1, operand_2,
143 OperandType::kNone}; 154 OperandType::kNone};
144 return operand_types; 155 return operand_types;
145 } 156 }
146 157
158 static const OperandTypeInfo* GetOperandTypeInfos() {
159 static const OperandTypeInfo operand_type_infos[] = {
160 OperandTraits<operand_0>::kOperandTypeInfo,
161 OperandTraits<operand_1>::kOperandTypeInfo,
162 OperandTraits<operand_2>::kOperandTypeInfo, OperandTypeInfo::kNone};
163 return operand_type_infos;
164 }
165
147 static const OperandSize* GetOperandSizes(OperandScale operand_scale) { 166 static const OperandSize* GetOperandSizes(OperandScale operand_scale) {
148 switch (operand_scale) { 167 switch (operand_scale) {
149 #define CASE(Name, _) \ 168 #define CASE(Name, _) \
150 case OperandScale::k##Name: { \ 169 case OperandScale::k##Name: { \
151 static const OperandSize kOperandSizes[] = { \ 170 static const OperandSize kOperandSizes[] = { \
152 OperandScaler<operand_0, OperandScale::k##Name>::kOperandSize, \ 171 OperandScaler<operand_0, OperandScale::k##Name>::kOperandSize, \
153 OperandScaler<operand_1, OperandScale::k##Name>::kOperandSize, \ 172 OperandScaler<operand_1, OperandScale::k##Name>::kOperandSize, \
154 OperandScaler<operand_2, OperandScale::k##Name>::kOperandSize, \ 173 OperandScaler<operand_2, OperandScale::k##Name>::kOperandSize, \
155 }; \ 174 }; \
156 return kOperandSizes; \ 175 return kOperandSizes; \
157 } 176 }
158 OPERAND_SCALE_LIST(CASE) 177 OPERAND_SCALE_LIST(CASE)
159 #undef CASE 178 #undef CASE
160 } 179 }
161 UNREACHABLE(); 180 UNREACHABLE();
162 return nullptr; 181 return nullptr;
163 } 182 }
164 183
165 template <OperandType ot> 184 template <OperandType ot>
166 static inline bool HasAnyOperandsOfType() { 185 static inline bool HasAnyOperandsOfType() {
167 return operand_0 == ot || operand_1 == ot || operand_2 == ot; 186 return operand_0 == ot || operand_1 == ot || operand_2 == ot;
168 } 187 }
169 188
170 static inline bool IsScalable() { 189 static inline bool IsScalable() {
171 return (OperandTraits<operand_0>::TypeInfo::kIsScalable | 190 return (OperandTraits<operand_0>::TypeInfoTraits::kIsScalable |
172 OperandTraits<operand_1>::TypeInfo::kIsScalable | 191 OperandTraits<operand_1>::TypeInfoTraits::kIsScalable |
173 OperandTraits<operand_2>::TypeInfo::kIsScalable); 192 OperandTraits<operand_2>::TypeInfoTraits::kIsScalable);
174 } 193 }
175 194
176 static const AccumulatorUse kAccumulatorUse = accumulator_use; 195 static const AccumulatorUse kAccumulatorUse = accumulator_use;
177 static const int kOperandCount = 3; 196 static const int kOperandCount = 3;
178 static const int kRegisterOperandCount = 197 static const int kRegisterOperandCount =
179 RegisterOperandTraits<operand_0>::kIsRegisterOperand + 198 RegisterOperandTraits<operand_0>::kIsRegisterOperand +
180 RegisterOperandTraits<operand_1>::kIsRegisterOperand + 199 RegisterOperandTraits<operand_1>::kIsRegisterOperand +
181 RegisterOperandTraits<operand_2>::kIsRegisterOperand; 200 RegisterOperandTraits<operand_2>::kIsRegisterOperand;
182 static const int kRegisterOperandBitmap = 201 static const int kRegisterOperandBitmap =
183 RegisterOperandTraits<operand_0>::kIsRegisterOperand + 202 RegisterOperandTraits<operand_0>::kIsRegisterOperand +
184 (RegisterOperandTraits<operand_1>::kIsRegisterOperand << 1) + 203 (RegisterOperandTraits<operand_1>::kIsRegisterOperand << 1) +
185 (RegisterOperandTraits<operand_2>::kIsRegisterOperand << 2); 204 (RegisterOperandTraits<operand_2>::kIsRegisterOperand << 2);
186 }; 205 };
187 206
188 template <AccumulatorUse accumulator_use, OperandType operand_0, 207 template <AccumulatorUse accumulator_use, OperandType operand_0,
189 OperandType operand_1> 208 OperandType operand_1>
190 struct BytecodeTraits<accumulator_use, operand_0, operand_1> { 209 struct BytecodeTraits<accumulator_use, operand_0, operand_1> {
191 static const OperandType* GetOperandTypes() { 210 static const OperandType* GetOperandTypes() {
192 static const OperandType operand_types[] = {operand_0, operand_1, 211 static const OperandType operand_types[] = {operand_0, operand_1,
193 OperandType::kNone}; 212 OperandType::kNone};
194 return operand_types; 213 return operand_types;
195 } 214 }
196 215
216 static const OperandTypeInfo* GetOperandTypeInfos() {
217 static const OperandTypeInfo operand_type_infos[] = {
218 OperandTraits<operand_0>::kOperandTypeInfo,
219 OperandTraits<operand_1>::kOperandTypeInfo, OperandTypeInfo::kNone};
220 return operand_type_infos;
221 }
222
197 static const OperandSize* GetOperandSizes(OperandScale operand_scale) { 223 static const OperandSize* GetOperandSizes(OperandScale operand_scale) {
198 switch (operand_scale) { 224 switch (operand_scale) {
199 #define CASE(Name, _) \ 225 #define CASE(Name, _) \
200 case OperandScale::k##Name: { \ 226 case OperandScale::k##Name: { \
201 static const OperandSize kOperandSizes[] = { \ 227 static const OperandSize kOperandSizes[] = { \
202 OperandScaler<operand_0, OperandScale::k##Name>::kOperandSize, \ 228 OperandScaler<operand_0, OperandScale::k##Name>::kOperandSize, \
203 OperandScaler<operand_1, OperandScale::k##Name>::kOperandSize, \ 229 OperandScaler<operand_1, OperandScale::k##Name>::kOperandSize, \
204 }; \ 230 }; \
205 return kOperandSizes; \ 231 return kOperandSizes; \
206 } 232 }
207 OPERAND_SCALE_LIST(CASE) 233 OPERAND_SCALE_LIST(CASE)
208 #undef CASE 234 #undef CASE
209 } 235 }
210 UNREACHABLE(); 236 UNREACHABLE();
211 return nullptr; 237 return nullptr;
212 } 238 }
213 239
214 template <OperandType ot> 240 template <OperandType ot>
215 static inline bool HasAnyOperandsOfType() { 241 static inline bool HasAnyOperandsOfType() {
216 return operand_0 == ot || operand_1 == ot; 242 return operand_0 == ot || operand_1 == ot;
217 } 243 }
218 244
219 static inline bool IsScalable() { 245 static inline bool IsScalable() {
220 return (OperandTraits<operand_0>::TypeInfo::kIsScalable | 246 return (OperandTraits<operand_0>::TypeInfoTraits::kIsScalable |
221 OperandTraits<operand_1>::TypeInfo::kIsScalable); 247 OperandTraits<operand_1>::TypeInfoTraits::kIsScalable);
222 } 248 }
223 249
224 static const AccumulatorUse kAccumulatorUse = accumulator_use; 250 static const AccumulatorUse kAccumulatorUse = accumulator_use;
225 static const int kOperandCount = 2; 251 static const int kOperandCount = 2;
226 static const int kRegisterOperandCount = 252 static const int kRegisterOperandCount =
227 RegisterOperandTraits<operand_0>::kIsRegisterOperand + 253 RegisterOperandTraits<operand_0>::kIsRegisterOperand +
228 RegisterOperandTraits<operand_1>::kIsRegisterOperand; 254 RegisterOperandTraits<operand_1>::kIsRegisterOperand;
229 static const int kRegisterOperandBitmap = 255 static const int kRegisterOperandBitmap =
230 RegisterOperandTraits<operand_0>::kIsRegisterOperand + 256 RegisterOperandTraits<operand_0>::kIsRegisterOperand +
231 (RegisterOperandTraits<operand_1>::kIsRegisterOperand << 1); 257 (RegisterOperandTraits<operand_1>::kIsRegisterOperand << 1);
232 }; 258 };
233 259
234 template <AccumulatorUse accumulator_use, OperandType operand_0> 260 template <AccumulatorUse accumulator_use, OperandType operand_0>
235 struct BytecodeTraits<accumulator_use, operand_0> { 261 struct BytecodeTraits<accumulator_use, operand_0> {
236 static const OperandType* GetOperandTypes() { 262 static const OperandType* GetOperandTypes() {
237 static const OperandType operand_types[] = {operand_0, OperandType::kNone}; 263 static const OperandType operand_types[] = {operand_0, OperandType::kNone};
238 return operand_types; 264 return operand_types;
239 } 265 }
240 266
267 static const OperandTypeInfo* GetOperandTypeInfos() {
268 static const OperandTypeInfo operand_type_infos[] = {
269 OperandTraits<operand_0>::kOperandTypeInfo, OperandTypeInfo::kNone};
270 return operand_type_infos;
271 }
272
241 static const OperandSize* GetOperandSizes(OperandScale operand_scale) { 273 static const OperandSize* GetOperandSizes(OperandScale operand_scale) {
242 switch (operand_scale) { 274 switch (operand_scale) {
243 #define CASE(Name, _) \ 275 #define CASE(Name, _) \
244 case OperandScale::k##Name: { \ 276 case OperandScale::k##Name: { \
245 static const OperandSize kOperandSizes[] = { \ 277 static const OperandSize kOperandSizes[] = { \
246 OperandScaler<operand_0, OperandScale::k##Name>::kOperandSize, \ 278 OperandScaler<operand_0, OperandScale::k##Name>::kOperandSize, \
247 }; \ 279 }; \
248 return kOperandSizes; \ 280 return kOperandSizes; \
249 } 281 }
250 OPERAND_SCALE_LIST(CASE) 282 OPERAND_SCALE_LIST(CASE)
251 #undef CASE 283 #undef CASE
252 } 284 }
253 UNREACHABLE(); 285 UNREACHABLE();
254 return nullptr; 286 return nullptr;
255 } 287 }
256 288
257 template <OperandType ot> 289 template <OperandType ot>
258 static inline bool HasAnyOperandsOfType() { 290 static inline bool HasAnyOperandsOfType() {
259 return operand_0 == ot; 291 return operand_0 == ot;
260 } 292 }
261 293
262 static inline bool IsScalable() { 294 static inline bool IsScalable() {
263 return OperandTraits<operand_0>::TypeInfo::kIsScalable; 295 return OperandTraits<operand_0>::TypeInfoTraits::kIsScalable;
264 } 296 }
265 297
266 static const AccumulatorUse kAccumulatorUse = accumulator_use; 298 static const AccumulatorUse kAccumulatorUse = accumulator_use;
267 static const int kOperandCount = 1; 299 static const int kOperandCount = 1;
268 static const int kRegisterOperandCount = 300 static const int kRegisterOperandCount =
269 RegisterOperandTraits<operand_0>::kIsRegisterOperand; 301 RegisterOperandTraits<operand_0>::kIsRegisterOperand;
270 static const int kRegisterOperandBitmap = 302 static const int kRegisterOperandBitmap =
271 RegisterOperandTraits<operand_0>::kIsRegisterOperand; 303 RegisterOperandTraits<operand_0>::kIsRegisterOperand;
272 }; 304 };
273 305
274 template <AccumulatorUse accumulator_use> 306 template <AccumulatorUse accumulator_use>
275 struct BytecodeTraits<accumulator_use> { 307 struct BytecodeTraits<accumulator_use> {
276 static const OperandType* GetOperandTypes() { 308 static const OperandType* GetOperandTypes() {
277 static const OperandType operand_types[] = {OperandType::kNone}; 309 static const OperandType operand_types[] = {OperandType::kNone};
278 return operand_types; 310 return operand_types;
279 } 311 }
280 312
313 static const OperandTypeInfo* GetOperandTypeInfos() {
314 static const OperandTypeInfo operand_type_infos[] = {
315 OperandTypeInfo::kNone};
316 return operand_type_infos;
317 }
318
281 static const OperandSize* GetOperandSizes(OperandScale operand_scale) { 319 static const OperandSize* GetOperandSizes(OperandScale operand_scale) {
282 return nullptr; 320 return nullptr;
283 } 321 }
284 322
285 template <OperandType ot> 323 template <OperandType ot>
286 static inline bool HasAnyOperandsOfType() { 324 static inline bool HasAnyOperandsOfType() {
287 return false; 325 return false;
288 } 326 }
289 327
290 static inline bool IsScalable() { return false; } 328 static inline bool IsScalable() { return false; }
(...skipping 26 matching lines...) Expand all
317 } 355 }
318 UNREACHABLE(); 356 UNREACHABLE();
319 return OperandSize::kNone; 357 return OperandSize::kNone;
320 } 358 }
321 359
322 } // namespace interpreter 360 } // namespace interpreter
323 } // namespace internal 361 } // namespace internal
324 } // namespace v8 362 } // namespace v8
325 363
326 #endif // V8_INTERPRETER_BYTECODE_TRAITS_H_ 364 #endif // V8_INTERPRETER_BYTECODE_TRAITS_H_
OLDNEW
« no previous file with comments | « src/interpreter/bytecode-register-optimizer.cc ('k') | src/interpreter/bytecodes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698