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

Side by Side Diff: test/unittests/interpreter/interpreter-assembler-unittest.cc

Issue 1783483002: [interpreter] Add support for scalable operands. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Additional test for debugger stepping and wider constant array builder test. Created 4 years, 9 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 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 #include "test/unittests/interpreter/interpreter-assembler-unittest.h" 5 #include "test/unittests/interpreter/interpreter-assembler-unittest.h"
6 6
7 #include "src/code-factory.h" 7 #include "src/code-factory.h"
8 #include "src/compiler/graph.h" 8 #include "src/compiler/graph.h"
9 #include "src/compiler/node.h" 9 #include "src/compiler/node.h"
10 #include "src/interface-descriptors.h" 10 #include "src/interface-descriptors.h"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 70
71 Matcher<Node*> InterpreterAssemblerTest::InterpreterAssemblerForTest::IsStore( 71 Matcher<Node*> InterpreterAssemblerTest::InterpreterAssemblerForTest::IsStore(
72 const Matcher<StoreRepresentation>& rep_matcher, 72 const Matcher<StoreRepresentation>& rep_matcher,
73 const Matcher<Node*>& base_matcher, const Matcher<Node*>& index_matcher, 73 const Matcher<Node*>& base_matcher, const Matcher<Node*>& index_matcher,
74 const Matcher<Node*>& value_matcher) { 74 const Matcher<Node*>& value_matcher) {
75 return ::i::compiler::IsStore(rep_matcher, base_matcher, index_matcher, 75 return ::i::compiler::IsStore(rep_matcher, base_matcher, index_matcher,
76 value_matcher, _, _); 76 value_matcher, _, _);
77 } 77 }
78 78
79 Matcher<Node*> 79 Matcher<Node*>
80 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsBytecodeOperand( 80 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedByteOperand(
81 int offset) { 81 int offset) {
82 return IsLoad( 82 return IsLoad(
83 MachineType::Uint8(), 83 MachineType::Uint8(),
84 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter), 84 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
85 IsIntPtrAdd( 85 IsIntPtrAdd(
86 IsParameter(InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 86 IsParameter(InterpreterDispatchDescriptor::kBytecodeOffsetParameter),
87 IsIntPtrConstant(offset))); 87 IsIntPtrConstant(offset)));
88 } 88 }
89 89
90 Matcher<Node*> InterpreterAssemblerTest::InterpreterAssemblerForTest:: 90 Matcher<Node*>
91 IsBytecodeOperandSignExtended(int offset) { 91 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedByteOperand(
92 int offset) {
92 Matcher<Node*> load_matcher = IsLoad( 93 Matcher<Node*> load_matcher = IsLoad(
93 MachineType::Int8(), 94 MachineType::Int8(),
94 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter), 95 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
95 IsIntPtrAdd( 96 IsIntPtrAdd(
96 IsParameter(InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 97 IsParameter(InterpreterDispatchDescriptor::kBytecodeOffsetParameter),
97 IsIntPtrConstant(offset))); 98 IsIntPtrConstant(offset)));
98 if (kPointerSize == 8) { 99 if (kPointerSize == 8) {
99 load_matcher = IsChangeInt32ToInt64(load_matcher); 100 load_matcher = IsChangeInt32ToInt64(load_matcher);
100 } 101 }
101 return load_matcher; 102 return load_matcher;
102 } 103 }
103 104
104 Matcher<Node*> 105 Matcher<Node*>
105 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsBytecodeOperandShort( 106 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedShortOperand(
106 int offset) { 107 int offset) {
107 if (TargetSupportsUnalignedAccess()) { 108 if (TargetSupportsUnalignedAccess()) {
108 return IsLoad( 109 return IsLoad(
109 MachineType::Uint16(), 110 MachineType::Uint16(),
110 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter), 111 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
111 IsIntPtrAdd( 112 IsIntPtrAdd(
112 IsParameter( 113 IsParameter(
113 InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 114 InterpreterDispatchDescriptor::kBytecodeOffsetParameter),
114 IsIntPtrConstant(offset))); 115 IsIntPtrConstant(offset)));
115 } else { 116 } else {
(...skipping 16 matching lines...) Expand all
132 first_byte); 133 first_byte);
133 #elif V8_TARGET_BIG_ENDIAN 134 #elif V8_TARGET_BIG_ENDIAN
134 return IsWordOr(IsWordShl(first_byte, IsIntPtrConstant(kBitsPerByte)), 135 return IsWordOr(IsWordShl(first_byte, IsIntPtrConstant(kBitsPerByte)),
135 second_byte); 136 second_byte);
136 #else 137 #else
137 #error "Unknown Architecture" 138 #error "Unknown Architecture"
138 #endif 139 #endif
139 } 140 }
140 } 141 }
141 142
142 Matcher<Node*> InterpreterAssemblerTest::InterpreterAssemblerForTest:: 143 Matcher<Node*>
143 IsBytecodeOperandShortSignExtended(int offset) { 144 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedShortOperand(
145 int offset) {
144 Matcher<Node*> load_matcher; 146 Matcher<Node*> load_matcher;
145 if (TargetSupportsUnalignedAccess()) { 147 if (TargetSupportsUnalignedAccess()) {
146 load_matcher = IsLoad( 148 load_matcher = IsLoad(
147 MachineType::Int16(), 149 MachineType::Int16(),
148 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter), 150 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
149 IsIntPtrAdd( 151 IsIntPtrAdd(
150 IsParameter( 152 IsParameter(
151 InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 153 InterpreterDispatchDescriptor::kBytecodeOffsetParameter),
152 IsIntPtrConstant(offset))); 154 IsIntPtrConstant(offset)));
153 } else { 155 } else {
(...skipping 24 matching lines...) Expand all
178 IsIntPtrConstant(lo_byte_offset))); 180 IsIntPtrConstant(lo_byte_offset)));
179 load_matcher = IsWord32Or(hi_byte, lo_byte); 181 load_matcher = IsWord32Or(hi_byte, lo_byte);
180 } 182 }
181 183
182 if (kPointerSize == 8) { 184 if (kPointerSize == 8) {
183 load_matcher = IsChangeInt32ToInt64(load_matcher); 185 load_matcher = IsChangeInt32ToInt64(load_matcher);
184 } 186 }
185 return load_matcher; 187 return load_matcher;
186 } 188 }
187 189
190 Matcher<Node*>
191 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedQuadOperand(
192 int offset) {
193 if (TargetSupportsUnalignedAccess()) {
194 return IsLoad(
195 MachineType::Uint32(),
196 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
197 IsIntPtrAdd(
198 IsParameter(
199 InterpreterDispatchDescriptor::kBytecodeOffsetParameter),
200 IsIntPtrConstant(offset)));
201 } else {
202 Matcher<Node*> bytes[4];
203 for (int i = 0; i < static_cast<int>(arraysize(bytes)); i++) {
204 bytes[i] = IsLoad(
205 MachineType::Uint8(),
206 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
207 IsIntPtrAdd(
208 IsParameter(
209 InterpreterDispatchDescriptor::kBytecodeOffsetParameter),
210 IsIntPtrConstant(offset + i)));
211 }
212
213 #if V8_TARGET_LITTLE_ENDIAN
214 Matcher<Node*> upper =
215 IsWordOr(IsWordShl(bytes[3], IsIntPtrConstant(kBitsPerByte)), bytes[2]);
216 Matcher<Node*> lower =
217 IsWordOr(IsWordShl(bytes[1], IsIntPtrConstant(kBitsPerByte)), bytes[0]);
218 return IsWordOr(IsWordShl(upper, IsIntPtrConstant(2 * kBitsPerByte)),
219 lower);
220 #elif V8_TARGET_BIG_ENDIAN
221 Matcher<Node*> upper =
222 IsWordOr(IsWordShl(bytes[0], IsIntPtrConstant(kBitsPerByte)), bytes[1]);
223 Matcher<Node*> lower =
224 IsWordOr(IsWordShl(bytes[2], IsIntPtrConstant(kBitsPerByte)), bytes[3]);
225 return IsWordOr(IsWordShl(upper, IsIntPtrConstant(2 * kBitsPerByte)),
226 lower);
227 #else
228 #error "Unknown Architecture"
229 #endif
230 }
231 }
232
233 Matcher<Node*>
234 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedQuadOperand(
235 int offset) {
236 Matcher<Node*> load_matcher;
237 if (TargetSupportsUnalignedAccess()) {
238 load_matcher = IsLoad(
239 MachineType::Int32(),
240 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
241 IsIntPtrAdd(
242 IsParameter(
243 InterpreterDispatchDescriptor::kBytecodeOffsetParameter),
244 IsIntPtrConstant(offset)));
245 } else {
246 Matcher<Node*> bytes[4];
247 for (int i = 0; i < static_cast<int>(arraysize(bytes)); i++) {
248 bytes[i] = IsLoad(
249 MachineType::Uint8(),
250 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
251 IsIntPtrAdd(
252 IsParameter(
253 InterpreterDispatchDescriptor::kBytecodeOffsetParameter),
254 IsIntPtrConstant(offset + i)));
255 }
256
257 #if V8_TARGET_LITTLE_ENDIAN
258 Matcher<Node*> upper =
259 IsWordOr(IsWordShl(bytes[3], IsIntPtrConstant(kBitsPerByte)), bytes[2]);
260 Matcher<Node*> lower =
261 IsWordOr(IsWordShl(bytes[1], IsIntPtrConstant(kBitsPerByte)), bytes[0]);
262 load_matcher =
263 IsWordOr(IsWordShl(upper, IsIntPtrConstant(2 * kBitsPerByte)), lower);
264 #elif V8_TARGET_BIG_ENDIAN
265 Matcher<Node*> upper =
266 IsWordOr(IsWordShl(bytes[0], IsIntPtrConstant(kBitsPerByte)), bytes[1]);
267 Matcher<Node*> lower =
268 IsWordOr(IsWordShl(bytes[2], IsIntPtrConstant(kBitsPerByte)), bytes[3]);
269 load_matcher =
270 IsWordOr(IsWordShl(upper, IsIntPtrConstant(2 * kBitsPerByte)), lower);
271 #else
272 #error "Unknown Architecture"
273 #endif
274 }
275
276 if (kPointerSize == 8) {
277 load_matcher = IsChangeInt32ToInt64(load_matcher);
278 }
279 return load_matcher;
280 }
281
282 Matcher<Node*>
283 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedOperand(
284 int offset, OperandSize operand_size) {
285 switch (operand_size) {
286 case OperandSize::kByte:
287 return IsSignedByteOperand(offset);
288 case OperandSize::kShort:
289 return IsSignedShortOperand(offset);
290 case OperandSize::kQuad:
291 return IsSignedQuadOperand(offset);
292 case OperandSize::kNone:
293 UNREACHABLE();
294 }
295 return nullptr;
296 }
297
298 Matcher<Node*>
299 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedOperand(
300 int offset, OperandSize operand_size) {
301 switch (operand_size) {
302 case OperandSize::kByte:
303 return IsUnsignedByteOperand(offset);
304 case OperandSize::kShort:
305 return IsUnsignedShortOperand(offset);
306 case OperandSize::kQuad:
307 return IsUnsignedQuadOperand(offset);
308 case OperandSize::kNone:
309 UNREACHABLE();
310 }
311 return nullptr;
312 }
313
188 TARGET_TEST_F(InterpreterAssemblerTest, Dispatch) { 314 TARGET_TEST_F(InterpreterAssemblerTest, Dispatch) {
189 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 315 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
190 InterpreterAssemblerForTest m(this, bytecode); 316 InterpreterAssemblerForTest m(this, bytecode);
191 m.Dispatch(); 317 m.Dispatch();
192 Graph* graph = m.graph(); 318 Graph* graph = m.graph();
193 319
194 Node* end = graph->end(); 320 Node* end = graph->end();
195 EXPECT_EQ(1, end->InputCount()); 321 EXPECT_EQ(1, end->InputCount());
196 Node* tail_call_node = end->InputAt(0); 322 Node* tail_call_node = end->InputAt(0);
197 323
324 OperandScale operand_scale = OperandScale::k1X;
198 Matcher<Node*> next_bytecode_offset_matcher = IsIntPtrAdd( 325 Matcher<Node*> next_bytecode_offset_matcher = IsIntPtrAdd(
199 IsParameter(InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 326 IsParameter(InterpreterDispatchDescriptor::kBytecodeOffsetParameter),
200 IsIntPtrConstant(interpreter::Bytecodes::Size(bytecode))); 327 IsIntPtrConstant(
328 interpreter::Bytecodes::Size(bytecode, operand_scale)));
201 Matcher<Node*> target_bytecode_matcher = m.IsLoad( 329 Matcher<Node*> target_bytecode_matcher = m.IsLoad(
202 MachineType::Uint8(), 330 MachineType::Uint8(),
203 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter), 331 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
204 next_bytecode_offset_matcher); 332 next_bytecode_offset_matcher);
205 if (kPointerSize == 8) { 333 if (kPointerSize == 8) {
206 target_bytecode_matcher = IsChangeUint32ToUint64(target_bytecode_matcher); 334 target_bytecode_matcher = IsChangeUint32ToUint64(target_bytecode_matcher);
207 } 335 }
208 Matcher<Node*> code_target_matcher = m.IsLoad( 336 Matcher<Node*> code_target_matcher = m.IsLoad(
209 MachineType::Pointer(), 337 MachineType::Pointer(),
210 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter), 338 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter),
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 407
280 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 408 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
281 InterpreterAssemblerForTest m(this, bytecode); 409 InterpreterAssemblerForTest m(this, bytecode);
282 Node* lhs = m.IntPtrConstant(0); 410 Node* lhs = m.IntPtrConstant(0);
283 Node* rhs = m.IntPtrConstant(1); 411 Node* rhs = m.IntPtrConstant(1);
284 m.JumpIfWordEqual(lhs, rhs, m.IntPtrConstant(kJumpIfTrueOffset)); 412 m.JumpIfWordEqual(lhs, rhs, m.IntPtrConstant(kJumpIfTrueOffset));
285 Graph* graph = m.graph(); 413 Graph* graph = m.graph();
286 Node* end = graph->end(); 414 Node* end = graph->end();
287 EXPECT_EQ(2, end->InputCount()); 415 EXPECT_EQ(2, end->InputCount());
288 416
289 int jump_offsets[] = {kJumpIfTrueOffset, 417 OperandScale operand_scale = OperandScale::k1X;
290 interpreter::Bytecodes::Size(bytecode)}; 418 int jump_offsets[] = {kJumpIfTrueOffset, interpreter::Bytecodes::Size(
419 bytecode, operand_scale)};
291 for (int i = 0; i < static_cast<int>(arraysize(jump_offsets)); i++) { 420 for (int i = 0; i < static_cast<int>(arraysize(jump_offsets)); i++) {
292 Matcher<Node*> next_bytecode_offset_matcher = IsIntPtrAdd( 421 Matcher<Node*> next_bytecode_offset_matcher = IsIntPtrAdd(
293 IsParameter(InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 422 IsParameter(InterpreterDispatchDescriptor::kBytecodeOffsetParameter),
294 IsIntPtrConstant(jump_offsets[i])); 423 IsIntPtrConstant(jump_offsets[i]));
295 Matcher<Node*> target_bytecode_matcher = 424 Matcher<Node*> target_bytecode_matcher =
296 m.IsLoad(MachineType::Uint8(), _, next_bytecode_offset_matcher); 425 m.IsLoad(MachineType::Uint8(), _, next_bytecode_offset_matcher);
297 if (kPointerSize == 8) { 426 if (kPointerSize == 8) {
298 target_bytecode_matcher = 427 target_bytecode_matcher =
299 IsChangeUint32ToUint64(target_bytecode_matcher); 428 IsChangeUint32ToUint64(target_bytecode_matcher);
300 } 429 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 IsParameter( 474 IsParameter(
346 InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 475 InterpreterDispatchDescriptor::kBytecodeOffsetParameter),
347 _, 476 _,
348 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter), 477 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter),
349 IsParameter(InterpreterDispatchDescriptor::kContextParameter), _, 478 IsParameter(InterpreterDispatchDescriptor::kContextParameter), _,
350 _)); 479 _));
351 } 480 }
352 } 481 }
353 482
354 TARGET_TEST_F(InterpreterAssemblerTest, BytecodeOperand) { 483 TARGET_TEST_F(InterpreterAssemblerTest, BytecodeOperand) {
484 static const OperandScale kOperandScales[] = {
485 OperandScale::k1X, OperandScale::k2X, OperandScale::k4X};
355 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 486 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
356 InterpreterAssemblerForTest m(this, bytecode); 487 TRACED_FOREACH(interpreter::OperandScale, operand_scale, kOperandScales) {
357 int number_of_operands = interpreter::Bytecodes::NumberOfOperands(bytecode); 488 InterpreterAssemblerForTest m(this, bytecode, operand_scale);
358 for (int i = 0; i < number_of_operands; i++) { 489 int number_of_operands =
359 int offset = interpreter::Bytecodes::GetOperandOffset(bytecode, i); 490 interpreter::Bytecodes::NumberOfOperands(bytecode);
360 switch (interpreter::Bytecodes::GetOperandType(bytecode, i)) { 491 for (int i = 0; i < number_of_operands; i++) {
361 case interpreter::OperandType::kRegCount8: 492 int offset = interpreter::Bytecodes::GetOperandOffset(bytecode, i,
362 EXPECT_THAT(m.BytecodeOperandCount(i), m.IsBytecodeOperand(offset)); 493 operand_scale);
363 break; 494 OperandType operand_type =
364 case interpreter::OperandType::kIdx8: 495 interpreter::Bytecodes::GetOperandType(bytecode, i);
365 EXPECT_THAT(m.BytecodeOperandIdx(i), m.IsBytecodeOperand(offset)); 496 OperandSize operand_size =
366 break; 497 Bytecodes::SizeOfOperand(operand_type, operand_scale);
367 case interpreter::OperandType::kImm8: 498 switch (interpreter::Bytecodes::GetOperandType(bytecode, i)) {
368 EXPECT_THAT(m.BytecodeOperandImm(i), 499 case interpreter::OperandType::kRegCount:
369 m.IsBytecodeOperandSignExtended(offset)); 500 EXPECT_THAT(m.BytecodeOperandCount(i),
370 break; 501 m.IsUnsignedOperand(offset, operand_size));
371 case interpreter::OperandType::kMaybeReg8: 502 break;
372 case interpreter::OperandType::kReg8: 503 case interpreter::OperandType::kFlag8:
373 case interpreter::OperandType::kRegOut8: 504 EXPECT_THAT(m.BytecodeOperandFlag(i),
374 case interpreter::OperandType::kRegOutPair8: 505 m.IsUnsignedOperand(offset, operand_size));
375 case interpreter::OperandType::kRegOutTriple8: 506 break;
376 case interpreter::OperandType::kRegPair8: 507 case interpreter::OperandType::kIdx:
377 EXPECT_THAT(m.BytecodeOperandReg(i), 508 EXPECT_THAT(m.BytecodeOperandIdx(i),
378 m.IsBytecodeOperandSignExtended(offset)); 509 m.IsUnsignedOperand(offset, operand_size));
379 break; 510 break;
380 case interpreter::OperandType::kRegCount16: 511 case interpreter::OperandType::kImm: {
381 EXPECT_THAT(m.BytecodeOperandCount(i), 512 EXPECT_THAT(m.BytecodeOperandImm(i),
382 m.IsBytecodeOperandShort(offset)); 513 m.IsSignedOperand(offset, operand_size));
383 break; 514 break;
384 case interpreter::OperandType::kIdx16: 515 }
385 EXPECT_THAT(m.BytecodeOperandIdx(i), 516 case interpreter::OperandType::kMaybeReg:
386 m.IsBytecodeOperandShort(offset)); 517 case interpreter::OperandType::kReg:
387 break; 518 case interpreter::OperandType::kRegOut:
388 case interpreter::OperandType::kMaybeReg16: 519 case interpreter::OperandType::kRegOutPair:
389 case interpreter::OperandType::kReg16: 520 case interpreter::OperandType::kRegOutTriple:
390 case interpreter::OperandType::kRegOut16: 521 case interpreter::OperandType::kRegPair:
391 case interpreter::OperandType::kRegOutPair16: 522 EXPECT_THAT(m.BytecodeOperandReg(i),
392 case interpreter::OperandType::kRegOutTriple16: 523 m.IsSignedOperand(offset, operand_size));
393 case interpreter::OperandType::kRegPair16: 524 break;
394 EXPECT_THAT(m.BytecodeOperandReg(i), 525 case interpreter::OperandType::kRuntimeId:
395 m.IsBytecodeOperandShortSignExtended(offset)); 526 EXPECT_THAT(m.BytecodeOperandRuntimeId(i),
396 break; 527 m.IsUnsignedOperand(offset, operand_size));
397 case interpreter::OperandType::kNone: 528 break;
398 UNREACHABLE(); 529 case interpreter::OperandType::kNone:
399 break; 530 UNREACHABLE();
531 break;
532 }
400 } 533 }
401 } 534 }
402 } 535 }
403 } 536 }
404 537
405 TARGET_TEST_F(InterpreterAssemblerTest, GetSetAccumulator) { 538 TARGET_TEST_F(InterpreterAssemblerTest, GetSetAccumulator) {
406 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 539 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
407 InterpreterAssemblerForTest m(this, bytecode); 540 InterpreterAssemblerForTest m(this, bytecode);
408 // Should be incoming accumulator if not set. 541 // Should be incoming accumulator if not set.
409 EXPECT_THAT( 542 EXPECT_THAT(
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 feedback_vector, 816 feedback_vector,
684 m.IsLoad(MachineType::AnyTagged(), load_shared_function_info_matcher, 817 m.IsLoad(MachineType::AnyTagged(), load_shared_function_info_matcher,
685 IsIntPtrConstant(SharedFunctionInfo::kFeedbackVectorOffset - 818 IsIntPtrConstant(SharedFunctionInfo::kFeedbackVectorOffset -
686 kHeapObjectTag))); 819 kHeapObjectTag)));
687 } 820 }
688 } 821 }
689 822
690 } // namespace interpreter 823 } // namespace interpreter
691 } // namespace internal 824 } // namespace internal
692 } // namespace v8 825 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698