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

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

Issue 1887493004: [Interpreter] No longer require context machine register in bytecode handlers (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@int_dispatch
Patch Set: Fix x87 Created 4 years, 8 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/x87/macro-assembler-x87.h ('k') | no next file » | 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 #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 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 339
340 EXPECT_THAT( 340 EXPECT_THAT(
341 tail_call_node, 341 tail_call_node,
342 IsTailCall( 342 IsTailCall(
343 _, code_target_matcher, 343 _, code_target_matcher,
344 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter), 344 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter),
345 IsParameter(InterpreterDispatchDescriptor::kRegisterFileParameter), 345 IsParameter(InterpreterDispatchDescriptor::kRegisterFileParameter),
346 next_bytecode_offset_matcher, 346 next_bytecode_offset_matcher,
347 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter), 347 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
348 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter), 348 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter),
349 IsParameter(InterpreterDispatchDescriptor::kContextParameter), _, 349 _, _));
350 _));
351 } 350 }
352 } 351 }
353 352
354 TARGET_TEST_F(InterpreterAssemblerTest, Jump) { 353 TARGET_TEST_F(InterpreterAssemblerTest, Jump) {
355 // If debug code is enabled we emit extra code in Jump. 354 // If debug code is enabled we emit extra code in Jump.
356 if (FLAG_debug_code) return; 355 if (FLAG_debug_code) return;
357 356
358 int jump_offsets[] = {-9710, -77, 0, +3, +97109}; 357 int jump_offsets[] = {-9710, -77, 0, +3, +97109};
359 TRACED_FOREACH(int, jump_offset, jump_offsets) { 358 TRACED_FOREACH(int, jump_offset, jump_offsets) {
360 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 359 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
(...skipping 22 matching lines...) Expand all
383 EXPECT_THAT( 382 EXPECT_THAT(
384 tail_call_node, 383 tail_call_node,
385 IsTailCall( 384 IsTailCall(
386 _, code_target_matcher, 385 _, code_target_matcher,
387 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter), 386 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter),
388 IsParameter( 387 IsParameter(
389 InterpreterDispatchDescriptor::kRegisterFileParameter), 388 InterpreterDispatchDescriptor::kRegisterFileParameter),
390 next_bytecode_offset_matcher, _, 389 next_bytecode_offset_matcher, _,
391 IsParameter( 390 IsParameter(
392 InterpreterDispatchDescriptor::kDispatchTableParameter), 391 InterpreterDispatchDescriptor::kDispatchTableParameter),
393 IsParameter(InterpreterDispatchDescriptor::kContextParameter), _, 392 _, _));
394 _));
395 } 393 }
396 } 394 }
397 } 395 }
398 396
399 TARGET_TEST_F(InterpreterAssemblerTest, JumpIfWordEqual) { 397 TARGET_TEST_F(InterpreterAssemblerTest, JumpIfWordEqual) {
400 static const int kJumpIfTrueOffset = 73; 398 static const int kJumpIfTrueOffset = 73;
401 399
402 // If debug code is enabled we emit extra code in Jump. 400 // If debug code is enabled we emit extra code in Jump.
403 if (FLAG_debug_code) return; 401 if (FLAG_debug_code) return;
404 402
(...skipping 29 matching lines...) Expand all
434 EXPECT_THAT( 432 EXPECT_THAT(
435 end->InputAt(i), 433 end->InputAt(i),
436 IsTailCall( 434 IsTailCall(
437 _, code_target_matcher, 435 _, code_target_matcher,
438 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter), 436 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter),
439 IsParameter( 437 IsParameter(
440 InterpreterDispatchDescriptor::kRegisterFileParameter), 438 InterpreterDispatchDescriptor::kRegisterFileParameter),
441 next_bytecode_offset_matcher, _, 439 next_bytecode_offset_matcher, _,
442 IsParameter( 440 IsParameter(
443 InterpreterDispatchDescriptor::kDispatchTableParameter), 441 InterpreterDispatchDescriptor::kDispatchTableParameter),
444 IsParameter(InterpreterDispatchDescriptor::kContextParameter), _, 442 _, _));
445 _));
446 } 443 }
447 444
448 // TODO(oth): test control flow paths. 445 // TODO(oth): test control flow paths.
449 } 446 }
450 } 447 }
451 448
452 TARGET_TEST_F(InterpreterAssemblerTest, InterpreterReturn) { 449 TARGET_TEST_F(InterpreterAssemblerTest, InterpreterReturn) {
453 // If debug code is enabled we emit extra code in InterpreterReturn. 450 // If debug code is enabled we emit extra code in InterpreterReturn.
454 if (FLAG_debug_code) return; 451 if (FLAG_debug_code) return;
455 452
(...skipping 14 matching lines...) Expand all
470 EXPECT_THAT( 467 EXPECT_THAT(
471 tail_call_node, 468 tail_call_node,
472 IsTailCall( 469 IsTailCall(
473 _, exit_trampoline_entry_matcher, 470 _, exit_trampoline_entry_matcher,
474 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter), 471 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter),
475 IsParameter(InterpreterDispatchDescriptor::kRegisterFileParameter), 472 IsParameter(InterpreterDispatchDescriptor::kRegisterFileParameter),
476 IsParameter( 473 IsParameter(
477 InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 474 InterpreterDispatchDescriptor::kBytecodeOffsetParameter),
478 _, 475 _,
479 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter), 476 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter),
480 IsParameter(InterpreterDispatchDescriptor::kContextParameter), _, 477 _, _));
481 _));
482 } 478 }
483 } 479 }
484 480
485 TARGET_TEST_F(InterpreterAssemblerTest, BytecodeOperand) { 481 TARGET_TEST_F(InterpreterAssemblerTest, BytecodeOperand) {
486 static const OperandScale kOperandScales[] = { 482 static const OperandScale kOperandScales[] = {
487 OperandScale::kSingle, OperandScale::kDouble, OperandScale::kQuadruple}; 483 OperandScale::kSingle, OperandScale::kDouble, OperandScale::kQuadruple};
488 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 484 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
489 TRACED_FOREACH(interpreter::OperandScale, operand_scale, kOperandScales) { 485 TRACED_FOREACH(interpreter::OperandScale, operand_scale, kOperandScales) {
490 InterpreterAssemblerForTest m(this, bytecode, operand_scale); 486 InterpreterAssemblerForTest m(this, bytecode, operand_scale);
491 int number_of_operands = 487 int number_of_operands =
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 559
564 Node* end = graph->end(); 560 Node* end = graph->end();
565 EXPECT_EQ(1, end->InputCount()); 561 EXPECT_EQ(1, end->InputCount());
566 Node* tail_call_node = end->InputAt(0); 562 Node* tail_call_node = end->InputAt(0);
567 563
568 EXPECT_THAT(tail_call_node, 564 EXPECT_THAT(tail_call_node,
569 IsTailCall(_, _, accumulator_value_2, _, _, _, _, _, _)); 565 IsTailCall(_, _, accumulator_value_2, _, _, _, _, _, _));
570 } 566 }
571 } 567 }
572 568
573 TARGET_TEST_F(InterpreterAssemblerTest, GetSetContext) { 569 TARGET_TEST_F(InterpreterAssemblerTest, GetContext) {
574 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 570 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
575 InterpreterAssemblerForTest m(this, bytecode); 571 InterpreterAssemblerForTest m(this, bytecode);
576 Node* context_node = m.Int32Constant(100); 572 EXPECT_THAT(
577 m.SetContext(context_node); 573 m.GetContext(),
578 EXPECT_THAT(m.GetContext(), context_node); 574 m.IsLoad(
575 MachineType::AnyTagged(),
576 IsParameter(InterpreterDispatchDescriptor::kRegisterFileParameter),
577 IsIntPtrConstant(-Register::current_context().index()
578 << kPointerSizeLog2)));
579 } 579 }
580 } 580 }
581 581
582 TARGET_TEST_F(InterpreterAssemblerTest, RegisterLocation) { 582 TARGET_TEST_F(InterpreterAssemblerTest, RegisterLocation) {
583 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 583 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
584 InterpreterAssemblerForTest m(this, bytecode); 584 InterpreterAssemblerForTest m(this, bytecode);
585 Node* reg_index_node = m.IntPtrConstant(44); 585 Node* reg_index_node = m.IntPtrConstant(44);
586 Node* reg_location_node = m.RegisterLocation(reg_index_node); 586 Node* reg_location_node = m.RegisterLocation(reg_index_node);
587 EXPECT_THAT( 587 EXPECT_THAT(
588 reg_location_node, 588 reg_location_node,
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
822 feedback_vector, 822 feedback_vector,
823 m.IsLoad(MachineType::AnyTagged(), load_shared_function_info_matcher, 823 m.IsLoad(MachineType::AnyTagged(), load_shared_function_info_matcher,
824 IsIntPtrConstant(SharedFunctionInfo::kFeedbackVectorOffset - 824 IsIntPtrConstant(SharedFunctionInfo::kFeedbackVectorOffset -
825 kHeapObjectTag))); 825 kHeapObjectTag)));
826 } 826 }
827 } 827 }
828 828
829 } // namespace interpreter 829 } // namespace interpreter
830 } // namespace internal 830 } // namespace internal
831 } // namespace v8 831 } // namespace v8
OLDNEW
« no previous file with comments | « src/x87/macro-assembler-x87.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698