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

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

Issue 1894063002: [Interpreter] Remove register file register and replace with LoadParentFramePointer. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix gcc 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 | « test/unittests/interpreter/bytecodes-unittest.cc ('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 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 Matcher<Node*> code_target_matcher = m.IsLoad( 335 Matcher<Node*> code_target_matcher = m.IsLoad(
336 MachineType::Pointer(), 336 MachineType::Pointer(),
337 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter), 337 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter),
338 IsWordShl(target_bytecode_matcher, IsIntPtrConstant(kPointerSizeLog2))); 338 IsWordShl(target_bytecode_matcher, IsIntPtrConstant(kPointerSizeLog2)));
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),
346 next_bytecode_offset_matcher, 345 next_bytecode_offset_matcher,
347 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter), 346 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
348 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter), 347 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter),
349 _, _)); 348 _, _));
350 } 349 }
351 } 350 }
352 351
353 TARGET_TEST_F(InterpreterAssemblerTest, Jump) { 352 TARGET_TEST_F(InterpreterAssemblerTest, Jump) {
354 // If debug code is enabled we emit extra code in Jump. 353 // If debug code is enabled we emit extra code in Jump.
355 if (FLAG_debug_code) return; 354 if (FLAG_debug_code) return;
(...skipping 21 matching lines...) Expand all
377 MachineType::Pointer(), 376 MachineType::Pointer(),
378 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter), 377 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter),
379 IsWordShl(target_bytecode_matcher, 378 IsWordShl(target_bytecode_matcher,
380 IsIntPtrConstant(kPointerSizeLog2))); 379 IsIntPtrConstant(kPointerSizeLog2)));
381 380
382 EXPECT_THAT( 381 EXPECT_THAT(
383 tail_call_node, 382 tail_call_node,
384 IsTailCall( 383 IsTailCall(
385 _, code_target_matcher, 384 _, code_target_matcher,
386 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter), 385 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter),
387 IsParameter(
388 InterpreterDispatchDescriptor::kRegisterFileParameter),
389 next_bytecode_offset_matcher, _, 386 next_bytecode_offset_matcher, _,
390 IsParameter( 387 IsParameter(
391 InterpreterDispatchDescriptor::kDispatchTableParameter), 388 InterpreterDispatchDescriptor::kDispatchTableParameter),
392 _, _)); 389 _, _));
393 } 390 }
394 } 391 }
395 } 392 }
396 393
397 TARGET_TEST_F(InterpreterAssemblerTest, JumpIfWordEqual) { 394 TARGET_TEST_F(InterpreterAssemblerTest, JumpIfWordEqual) {
398 static const int kJumpIfTrueOffset = 73; 395 static const int kJumpIfTrueOffset = 73;
(...skipping 28 matching lines...) Expand all
427 Matcher<Node*> code_target_matcher = m.IsLoad( 424 Matcher<Node*> code_target_matcher = m.IsLoad(
428 MachineType::Pointer(), 425 MachineType::Pointer(),
429 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter), 426 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter),
430 IsWordShl(target_bytecode_matcher, 427 IsWordShl(target_bytecode_matcher,
431 IsIntPtrConstant(kPointerSizeLog2))); 428 IsIntPtrConstant(kPointerSizeLog2)));
432 EXPECT_THAT( 429 EXPECT_THAT(
433 end->InputAt(i), 430 end->InputAt(i),
434 IsTailCall( 431 IsTailCall(
435 _, code_target_matcher, 432 _, code_target_matcher,
436 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter), 433 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter),
437 IsParameter(
438 InterpreterDispatchDescriptor::kRegisterFileParameter),
439 next_bytecode_offset_matcher, _, 434 next_bytecode_offset_matcher, _,
440 IsParameter( 435 IsParameter(
441 InterpreterDispatchDescriptor::kDispatchTableParameter), 436 InterpreterDispatchDescriptor::kDispatchTableParameter),
442 _, _)); 437 _, _));
443 } 438 }
444 439
445 // TODO(oth): test control flow paths. 440 // TODO(oth): test control flow paths.
446 } 441 }
447 } 442 }
448 443
(...skipping 13 matching lines...) Expand all
462 Handle<HeapObject> exit_trampoline = 457 Handle<HeapObject> exit_trampoline =
463 isolate()->builtins()->InterpreterExitTrampoline(); 458 isolate()->builtins()->InterpreterExitTrampoline();
464 Matcher<Node*> exit_trampoline_entry_matcher = 459 Matcher<Node*> exit_trampoline_entry_matcher =
465 IsIntPtrAdd(IsHeapConstant(exit_trampoline), 460 IsIntPtrAdd(IsHeapConstant(exit_trampoline),
466 IsIntPtrConstant(Code::kHeaderSize - kHeapObjectTag)); 461 IsIntPtrConstant(Code::kHeaderSize - kHeapObjectTag));
467 EXPECT_THAT( 462 EXPECT_THAT(
468 tail_call_node, 463 tail_call_node,
469 IsTailCall( 464 IsTailCall(
470 _, exit_trampoline_entry_matcher, 465 _, exit_trampoline_entry_matcher,
471 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter), 466 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter),
472 IsParameter(InterpreterDispatchDescriptor::kRegisterFileParameter),
473 IsParameter( 467 IsParameter(
474 InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 468 InterpreterDispatchDescriptor::kBytecodeOffsetParameter),
475 _, 469 _,
476 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter), 470 IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter),
477 _, _)); 471 _, _));
478 } 472 }
479 } 473 }
480 474
481 TARGET_TEST_F(InterpreterAssemblerTest, BytecodeOperand) { 475 TARGET_TEST_F(InterpreterAssemblerTest, BytecodeOperand) {
482 static const OperandScale kOperandScales[] = { 476 static const OperandScale kOperandScales[] = {
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
555 549
556 // Should be passed to next bytecode handler on dispatch. 550 // Should be passed to next bytecode handler on dispatch.
557 m.Dispatch(); 551 m.Dispatch();
558 Graph* graph = m.graph(); 552 Graph* graph = m.graph();
559 553
560 Node* end = graph->end(); 554 Node* end = graph->end();
561 EXPECT_EQ(1, end->InputCount()); 555 EXPECT_EQ(1, end->InputCount());
562 Node* tail_call_node = end->InputAt(0); 556 Node* tail_call_node = end->InputAt(0);
563 557
564 EXPECT_THAT(tail_call_node, 558 EXPECT_THAT(tail_call_node,
565 IsTailCall(_, _, accumulator_value_2, _, _, _, _, _, _)); 559 IsTailCall(_, _, accumulator_value_2, _, _, _, _));
566 } 560 }
567 } 561 }
568 562
569 TARGET_TEST_F(InterpreterAssemblerTest, GetContext) { 563 TARGET_TEST_F(InterpreterAssemblerTest, GetContext) {
570 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 564 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
571 InterpreterAssemblerForTest m(this, bytecode); 565 InterpreterAssemblerForTest m(this, bytecode);
572 EXPECT_THAT( 566 EXPECT_THAT(
573 m.GetContext(), 567 m.GetContext(),
574 m.IsLoad( 568 m.IsLoad(MachineType::AnyTagged(), IsLoadParentFramePointer(),
575 MachineType::AnyTagged(), 569 IsIntPtrConstant(Register::current_context().ToOperand()
576 IsParameter(InterpreterDispatchDescriptor::kRegisterFileParameter), 570 << kPointerSizeLog2)));
577 IsIntPtrConstant(-Register::current_context().index()
578 << kPointerSizeLog2)));
579 } 571 }
580 } 572 }
581 573
582 TARGET_TEST_F(InterpreterAssemblerTest, RegisterLocation) { 574 TARGET_TEST_F(InterpreterAssemblerTest, RegisterLocation) {
583 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 575 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
584 InterpreterAssemblerForTest m(this, bytecode); 576 InterpreterAssemblerForTest m(this, bytecode);
585 Node* reg_index_node = m.IntPtrConstant(44); 577 Node* reg_index_node = m.IntPtrConstant(44);
586 Node* reg_location_node = m.RegisterLocation(reg_index_node); 578 Node* reg_location_node = m.RegisterLocation(reg_index_node);
587 EXPECT_THAT( 579 EXPECT_THAT(reg_location_node,
588 reg_location_node, 580 IsIntPtrAdd(IsLoadParentFramePointer(),
589 IsIntPtrAdd( 581 IsWordShl(reg_index_node,
590 IsParameter(InterpreterDispatchDescriptor::kRegisterFileParameter), 582 IsIntPtrConstant(kPointerSizeLog2))));
591 IsWordShl(reg_index_node, IsIntPtrConstant(kPointerSizeLog2))));
592 } 583 }
593 } 584 }
594 585
595 TARGET_TEST_F(InterpreterAssemblerTest, LoadRegister) { 586 TARGET_TEST_F(InterpreterAssemblerTest, LoadRegister) {
596 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 587 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
597 InterpreterAssemblerForTest m(this, bytecode); 588 InterpreterAssemblerForTest m(this, bytecode);
598 Node* reg_index_node = m.IntPtrConstant(44); 589 Node* reg_index_node = m.IntPtrConstant(44);
599 Node* load_reg_node = m.LoadRegister(reg_index_node); 590 Node* load_reg_node = m.LoadRegister(reg_index_node);
600 EXPECT_THAT( 591 EXPECT_THAT(load_reg_node,
601 load_reg_node, 592 m.IsLoad(MachineType::AnyTagged(), IsLoadParentFramePointer(),
602 m.IsLoad( 593 IsWordShl(reg_index_node,
603 MachineType::AnyTagged(), 594 IsIntPtrConstant(kPointerSizeLog2))));
604 IsParameter(InterpreterDispatchDescriptor::kRegisterFileParameter),
605 IsWordShl(reg_index_node, IsIntPtrConstant(kPointerSizeLog2))));
606 } 595 }
607 } 596 }
608 597
609 TARGET_TEST_F(InterpreterAssemblerTest, StoreRegister) { 598 TARGET_TEST_F(InterpreterAssemblerTest, StoreRegister) {
610 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 599 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
611 InterpreterAssemblerForTest m(this, bytecode); 600 InterpreterAssemblerForTest m(this, bytecode);
612 Node* store_value = m.Int32Constant(0xdeadbeef); 601 Node* store_value = m.Int32Constant(0xdeadbeef);
613 Node* reg_index_node = m.IntPtrConstant(44); 602 Node* reg_index_node = m.IntPtrConstant(44);
614 Node* store_reg_node = m.StoreRegister(store_value, reg_index_node); 603 Node* store_reg_node = m.StoreRegister(store_value, reg_index_node);
615 EXPECT_THAT( 604 EXPECT_THAT(
616 store_reg_node, 605 store_reg_node,
617 m.IsStore( 606 m.IsStore(StoreRepresentation(MachineRepresentation::kTagged,
618 StoreRepresentation(MachineRepresentation::kTagged, 607 kNoWriteBarrier),
619 kNoWriteBarrier), 608 IsLoadParentFramePointer(),
620 IsParameter(InterpreterDispatchDescriptor::kRegisterFileParameter), 609 IsWordShl(reg_index_node, IsIntPtrConstant(kPointerSizeLog2)),
621 IsWordShl(reg_index_node, IsIntPtrConstant(kPointerSizeLog2)), 610 store_value));
622 store_value));
623 } 611 }
624 } 612 }
625 613
626 TARGET_TEST_F(InterpreterAssemblerTest, SmiTag) { 614 TARGET_TEST_F(InterpreterAssemblerTest, SmiTag) {
627 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 615 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
628 InterpreterAssemblerForTest m(this, bytecode); 616 InterpreterAssemblerForTest m(this, bytecode);
629 Node* value = m.Int32Constant(44); 617 Node* value = m.Int32Constant(44);
630 EXPECT_THAT( 618 EXPECT_THAT(
631 m.SmiTag(value), 619 m.SmiTag(value),
632 IsWordShl(value, IsIntPtrConstant(kSmiShiftSize + kSmiTagSize))); 620 IsWordShl(value, IsIntPtrConstant(kSmiShiftSize + kSmiTagSize)));
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 kFullWriteBarrier), 714 kFullWriteBarrier),
727 context, offset, value)); 715 context, offset, value));
728 } 716 }
729 } 717 }
730 718
731 TARGET_TEST_F(InterpreterAssemblerTest, CallRuntime2) { 719 TARGET_TEST_F(InterpreterAssemblerTest, CallRuntime2) {
732 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 720 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
733 InterpreterAssemblerForTest m(this, bytecode); 721 InterpreterAssemblerForTest m(this, bytecode);
734 Node* arg1 = m.Int32Constant(2); 722 Node* arg1 = m.Int32Constant(2);
735 Node* arg2 = m.Int32Constant(3); 723 Node* arg2 = m.Int32Constant(3);
736 Node* context = 724 Node* context = m.Int32Constant(4);
737 m.Parameter(InterpreterDispatchDescriptor::kContextParameter);
738 Node* call_runtime = m.CallRuntime(Runtime::kAdd, context, arg1, arg2); 725 Node* call_runtime = m.CallRuntime(Runtime::kAdd, context, arg1, arg2);
739 EXPECT_THAT( 726 EXPECT_THAT(call_runtime,
740 call_runtime, 727 IsCall(_, _, arg1, arg2, _, IsInt32Constant(2), context, _, _));
741 IsCall(_, _, arg1, arg2, _, IsInt32Constant(2),
742 IsParameter(InterpreterDispatchDescriptor::kContextParameter), _,
743 _));
744 } 728 }
745 } 729 }
746 730
747 TARGET_TEST_F(InterpreterAssemblerTest, CallRuntime) { 731 TARGET_TEST_F(InterpreterAssemblerTest, CallRuntime) {
748 const int kResultSizes[] = {1, 2}; 732 const int kResultSizes[] = {1, 2};
749 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 733 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
750 TRACED_FOREACH(int, result_size, kResultSizes) { 734 TRACED_FOREACH(int, result_size, kResultSizes) {
751 InterpreterAssemblerForTest m(this, bytecode); 735 InterpreterAssemblerForTest m(this, bytecode);
752 Callable builtin = CodeFactory::InterpreterCEntry(isolate(), result_size); 736 Callable builtin = CodeFactory::InterpreterCEntry(isolate(), result_size);
753 737
754 Node* function_id = m.Int32Constant(0); 738 Node* function_id = m.Int32Constant(0);
755 Node* first_arg = m.Int32Constant(1); 739 Node* first_arg = m.Int32Constant(1);
756 Node* arg_count = m.Int32Constant(2); 740 Node* arg_count = m.Int32Constant(2);
757 Node* context = 741 Node* context = m.Int32Constant(4);
758 m.Parameter(InterpreterDispatchDescriptor::kContextParameter);
759 742
760 Matcher<Node*> function_table = IsExternalConstant( 743 Matcher<Node*> function_table = IsExternalConstant(
761 ExternalReference::runtime_function_table_address(isolate())); 744 ExternalReference::runtime_function_table_address(isolate()));
762 Matcher<Node*> function = IsIntPtrAdd( 745 Matcher<Node*> function = IsIntPtrAdd(
763 function_table, 746 function_table,
764 IsInt32Mul(function_id, IsInt32Constant(sizeof(Runtime::Function)))); 747 IsInt32Mul(function_id, IsInt32Constant(sizeof(Runtime::Function))));
765 Matcher<Node*> function_entry = 748 Matcher<Node*> function_entry =
766 m.IsLoad(MachineType::Pointer(), function, 749 m.IsLoad(MachineType::Pointer(), function,
767 IsIntPtrConstant(offsetof(Runtime::Function, entry))); 750 IsIntPtrConstant(offsetof(Runtime::Function, entry)));
768 751
769 Node* call_runtime = m.CallRuntimeN(function_id, context, first_arg, 752 Node* call_runtime = m.CallRuntimeN(function_id, context, first_arg,
770 arg_count, result_size); 753 arg_count, result_size);
771 EXPECT_THAT( 754 EXPECT_THAT(call_runtime,
772 call_runtime, 755 IsCall(_, IsHeapConstant(builtin.code()), arg_count,
773 IsCall(_, IsHeapConstant(builtin.code()), arg_count, first_arg, 756 first_arg, function_entry, context, _, _));
774 function_entry,
775 IsParameter(InterpreterDispatchDescriptor::kContextParameter),
776 _, _));
777 } 757 }
778 } 758 }
779 } 759 }
780 760
781 TARGET_TEST_F(InterpreterAssemblerTest, CallJS) { 761 TARGET_TEST_F(InterpreterAssemblerTest, CallJS) {
782 TailCallMode tail_call_modes[] = {TailCallMode::kDisallow, 762 TailCallMode tail_call_modes[] = {TailCallMode::kDisallow,
783 TailCallMode::kAllow}; 763 TailCallMode::kAllow};
784 TRACED_FOREACH(TailCallMode, tail_call_mode, tail_call_modes) { 764 TRACED_FOREACH(TailCallMode, tail_call_mode, tail_call_modes) {
785 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 765 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
786 InterpreterAssemblerForTest m(this, bytecode); 766 InterpreterAssemblerForTest m(this, bytecode);
787 Callable builtin = 767 Callable builtin =
788 CodeFactory::InterpreterPushArgsAndCall(isolate(), tail_call_mode); 768 CodeFactory::InterpreterPushArgsAndCall(isolate(), tail_call_mode);
789 Node* function = m.Int32Constant(0); 769 Node* function = m.Int32Constant(0);
790 Node* first_arg = m.Int32Constant(1); 770 Node* first_arg = m.Int32Constant(1);
791 Node* arg_count = m.Int32Constant(2); 771 Node* arg_count = m.Int32Constant(2);
792 Node* context = 772 Node* context = m.Int32Constant(3);
793 m.Parameter(InterpreterDispatchDescriptor::kContextParameter);
794 Node* call_js = 773 Node* call_js =
795 m.CallJS(function, context, first_arg, arg_count, tail_call_mode); 774 m.CallJS(function, context, first_arg, arg_count, tail_call_mode);
796 EXPECT_THAT( 775 EXPECT_THAT(call_js, IsCall(_, IsHeapConstant(builtin.code()), arg_count,
797 call_js, 776 first_arg, function, context, _, _));
798 IsCall(_, IsHeapConstant(builtin.code()), arg_count, first_arg,
799 function,
800 IsParameter(InterpreterDispatchDescriptor::kContextParameter),
801 _, _));
802 } 777 }
803 } 778 }
804 } 779 }
805 780
806 TARGET_TEST_F(InterpreterAssemblerTest, LoadTypeFeedbackVector) { 781 TARGET_TEST_F(InterpreterAssemblerTest, LoadTypeFeedbackVector) {
807 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 782 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
808 InterpreterAssemblerForTest m(this, bytecode); 783 InterpreterAssemblerForTest m(this, bytecode);
809 Node* feedback_vector = m.LoadTypeFeedbackVector(); 784 Node* feedback_vector = m.LoadTypeFeedbackVector();
810 785
811 Matcher<Node*> load_function_matcher = m.IsLoad( 786 Matcher<Node*> load_function_matcher =
812 MachineType::AnyTagged(), 787 m.IsLoad(MachineType::AnyTagged(), IsLoadParentFramePointer(),
813 IsParameter(InterpreterDispatchDescriptor::kRegisterFileParameter), 788 IsIntPtrConstant(Register::function_closure().ToOperand()
814 IsIntPtrConstant( 789 << kPointerSizeLog2));
815 InterpreterFrameConstants::kFunctionFromRegisterPointer));
816 Matcher<Node*> load_shared_function_info_matcher = 790 Matcher<Node*> load_shared_function_info_matcher =
817 m.IsLoad(MachineType::AnyTagged(), load_function_matcher, 791 m.IsLoad(MachineType::AnyTagged(), load_function_matcher,
818 IsIntPtrConstant(JSFunction::kSharedFunctionInfoOffset - 792 IsIntPtrConstant(JSFunction::kSharedFunctionInfoOffset -
819 kHeapObjectTag)); 793 kHeapObjectTag));
820 794
821 EXPECT_THAT( 795 EXPECT_THAT(
822 feedback_vector, 796 feedback_vector,
823 m.IsLoad(MachineType::AnyTagged(), load_shared_function_info_matcher, 797 m.IsLoad(MachineType::AnyTagged(), load_shared_function_info_matcher,
824 IsIntPtrConstant(SharedFunctionInfo::kFeedbackVectorOffset - 798 IsIntPtrConstant(SharedFunctionInfo::kFeedbackVectorOffset -
825 kHeapObjectTag))); 799 kHeapObjectTag)));
826 } 800 }
827 } 801 }
828 802
829 } // namespace interpreter 803 } // namespace interpreter
830 } // namespace internal 804 } // namespace internal
831 } // namespace v8 805 } // namespace v8
OLDNEW
« no previous file with comments | « test/unittests/interpreter/bytecodes-unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698