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

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

Issue 1852213002: [interpreter] Add accumulator use description to bytecodes. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: 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
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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 return kPointerSize == 8 ? IsWord64Sar(lhs_matcher, rhs_matcher) 55 return kPointerSize == 8 ? IsWord64Sar(lhs_matcher, rhs_matcher)
56 : IsWord32Sar(lhs_matcher, rhs_matcher); 56 : IsWord32Sar(lhs_matcher, rhs_matcher);
57 } 57 }
58 58
59 Matcher<Node*> IsWordOr(const Matcher<Node*>& lhs_matcher, 59 Matcher<Node*> IsWordOr(const Matcher<Node*>& lhs_matcher,
60 const Matcher<Node*>& rhs_matcher) { 60 const Matcher<Node*>& rhs_matcher) {
61 return kPointerSize == 8 ? IsWord64Or(lhs_matcher, rhs_matcher) 61 return kPointerSize == 8 ? IsWord64Or(lhs_matcher, rhs_matcher)
62 : IsWord32Or(lhs_matcher, rhs_matcher); 62 : IsWord32Or(lhs_matcher, rhs_matcher);
63 } 63 }
64 64
65 InterpreterAssemblerTest::InterpreterAssemblerForTest::
66 ~InterpreterAssemblerForTest() {
67 // Tests don't necessarily read and write accumulator but
68 // InterpreterAssembler checks accumulator uses.
69 if (Bytecodes::ReadsAccumulator(bytecode())) {
70 GetAccumulator();
71 }
72 if (Bytecodes::WritesAccumulator(bytecode())) {
73 SetAccumulator(nullptr);
74 }
75 }
76
65 Matcher<Node*> InterpreterAssemblerTest::InterpreterAssemblerForTest::IsLoad( 77 Matcher<Node*> InterpreterAssemblerTest::InterpreterAssemblerForTest::IsLoad(
66 const Matcher<LoadRepresentation>& rep_matcher, 78 const Matcher<LoadRepresentation>& rep_matcher,
67 const Matcher<Node*>& base_matcher, const Matcher<Node*>& index_matcher) { 79 const Matcher<Node*>& base_matcher, const Matcher<Node*>& index_matcher) {
68 return ::i::compiler::IsLoad(rep_matcher, base_matcher, index_matcher, _, _); 80 return ::i::compiler::IsLoad(rep_matcher, base_matcher, index_matcher, _, _);
69 } 81 }
70 82
71 Matcher<Node*> InterpreterAssemblerTest::InterpreterAssemblerForTest::IsStore( 83 Matcher<Node*> InterpreterAssemblerTest::InterpreterAssemblerForTest::IsStore(
72 const Matcher<StoreRepresentation>& rep_matcher, 84 const Matcher<StoreRepresentation>& rep_matcher,
73 const Matcher<Node*>& base_matcher, const Matcher<Node*>& index_matcher, 85 const Matcher<Node*>& base_matcher, const Matcher<Node*>& index_matcher,
74 const Matcher<Node*>& value_matcher) { 86 const Matcher<Node*>& value_matcher) {
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 UNREACHABLE(); 529 UNREACHABLE();
518 break; 530 break;
519 } 531 }
520 } 532 }
521 } 533 }
522 } 534 }
523 } 535 }
524 536
525 TARGET_TEST_F(InterpreterAssemblerTest, GetSetAccumulator) { 537 TARGET_TEST_F(InterpreterAssemblerTest, GetSetAccumulator) {
526 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) { 538 TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
539 if (!interpreter::Bytecodes::ReadsAccumulator(bytecode) ||
540 !interpreter::Bytecodes::WritesAccumulator(bytecode)) {
541 continue;
542 }
543
527 InterpreterAssemblerForTest m(this, bytecode); 544 InterpreterAssemblerForTest m(this, bytecode);
528 // Should be incoming accumulator if not set. 545 // Should be incoming accumulator if not set.
529 EXPECT_THAT( 546 EXPECT_THAT(
530 m.GetAccumulator(), 547 m.GetAccumulator(),
531 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter)); 548 IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter));
532
533 // Should be set by SetAccumulator. 549 // Should be set by SetAccumulator.
534 Node* accumulator_value_1 = m.Int32Constant(0xdeadbeef); 550 Node* accumulator_value_1 = m.Int32Constant(0xdeadbeef);
535 m.SetAccumulator(accumulator_value_1); 551 m.SetAccumulator(accumulator_value_1);
536 EXPECT_THAT(m.GetAccumulator(), accumulator_value_1); 552 EXPECT_THAT(m.GetAccumulator(), accumulator_value_1);
537 Node* accumulator_value_2 = m.Int32Constant(42); 553 Node* accumulator_value_2 = m.Int32Constant(42);
538 m.SetAccumulator(accumulator_value_2); 554 m.SetAccumulator(accumulator_value_2);
539 EXPECT_THAT(m.GetAccumulator(), accumulator_value_2); 555 EXPECT_THAT(m.GetAccumulator(), accumulator_value_2);
540 556
541 // Should be passed to next bytecode handler on dispatch. 557 // Should be passed to next bytecode handler on dispatch.
542 m.Dispatch(); 558 m.Dispatch();
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 feedback_vector, 819 feedback_vector,
804 m.IsLoad(MachineType::AnyTagged(), load_shared_function_info_matcher, 820 m.IsLoad(MachineType::AnyTagged(), load_shared_function_info_matcher,
805 IsIntPtrConstant(SharedFunctionInfo::kFeedbackVectorOffset - 821 IsIntPtrConstant(SharedFunctionInfo::kFeedbackVectorOffset -
806 kHeapObjectTag))); 822 kHeapObjectTag)));
807 } 823 }
808 } 824 }
809 825
810 } // namespace interpreter 826 } // namespace interpreter
811 } // namespace internal 827 } // namespace internal
812 } // namespace v8 828 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698