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

Unified Diff: test/unittests/compiler/instruction-selector-unittest.cc

Issue 636543002: [turbofan] fix vreg mapping for instruction selector tests (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: test/unittests/compiler/instruction-selector-unittest.cc
diff --git a/test/unittests/compiler/instruction-selector-unittest.cc b/test/unittests/compiler/instruction-selector-unittest.cc
index 6d866c4367efc3d6661ed7b9bf7229a4acdc440e..8b759def7ea9d388e2d3dae02f9ed1445a5bb8a8 100644
--- a/test/unittests/compiler/instruction-selector-unittest.cc
+++ b/test/unittests/compiler/instruction-selector-unittest.cc
@@ -4,6 +4,7 @@
#include "test/unittests/compiler/instruction-selector-unittest.h"
+#include "src/compiler/graph-inl.h"
#include "src/flags.h"
#include "test/unittests/compiler/compiler-test-utils.h"
@@ -34,6 +35,7 @@ InstructionSelectorTest::Stream InstructionSelectorTest::StreamBuilder::Build(
<< *schedule;
}
EXPECT_NE(0, graph()->NodeCount());
+ int initial_node_count = graph()->NodeCount();
CompilationInfo info(test_->isolate(), test_->zone());
Linkage linkage(&info, call_descriptor());
InstructionSequence sequence(&linkage, graph(), schedule);
@@ -46,6 +48,15 @@ InstructionSelectorTest::Stream InstructionSelectorTest::StreamBuilder::Build(
<< sequence;
}
Stream s;
+ // Map virtual registers.
+ {
+ const int* node_map = sequence.GetNodeMapForTesting();
+ for (int i = 0; i < initial_node_count; ++i) {
+ if (node_map[i] >= 0) {
+ s.virtual_registers_.insert(std::make_pair(i, node_map[i]));
+ }
+ }
+ }
std::set<int> virtual_registers;
for (InstructionSequence::const_iterator i = sequence.begin();
i != sequence.end(); ++i) {
@@ -110,6 +121,13 @@ InstructionSelectorTest::Stream InstructionSelectorTest::StreamBuilder::Build(
}
+int InstructionSelectorTest::Stream::ToVreg(const Node* node) const {
+ VirtualRegisters::const_iterator i = virtual_registers_.find(node->id());
+ CHECK(i != virtual_registers_.end());
+ return i->second;
+}
+
+
// -----------------------------------------------------------------------------
// Return.
@@ -180,7 +198,7 @@ TARGET_TEST_F(InstructionSelectorTest, DoubleParameter) {
Node* param = m.Parameter(0);
m.Return(param);
Stream s = m.Build(kAllInstructions);
- EXPECT_TRUE(s.IsDouble(param->id()));
+ EXPECT_TRUE(s.IsDouble(param));
}
@@ -189,7 +207,7 @@ TARGET_TEST_F(InstructionSelectorTest, ReferenceParameter) {
Node* param = m.Parameter(0);
m.Return(param);
Stream s = m.Build(kAllInstructions);
- EXPECT_TRUE(s.IsReference(param->id()));
+ EXPECT_TRUE(s.IsReference(param));
}
@@ -207,16 +225,16 @@ TARGET_TEST_F(InstructionSelectorTest, Finish) {
EXPECT_EQ(kArchNop, s[0]->arch_opcode());
ASSERT_EQ(1U, s[0]->OutputCount());
ASSERT_TRUE(s[0]->Output()->IsUnallocated());
- EXPECT_EQ(param->id(), s.ToVreg(s[0]->Output()));
+ EXPECT_EQ(s.ToVreg(param), s.ToVreg(s[0]->Output()));
EXPECT_EQ(kArchNop, s[1]->arch_opcode());
ASSERT_EQ(1U, s[1]->InputCount());
ASSERT_TRUE(s[1]->InputAt(0)->IsUnallocated());
- EXPECT_EQ(param->id(), s.ToVreg(s[1]->InputAt(0)));
+ EXPECT_EQ(s.ToVreg(param), s.ToVreg(s[1]->InputAt(0)));
ASSERT_EQ(1U, s[1]->OutputCount());
ASSERT_TRUE(s[1]->Output()->IsUnallocated());
EXPECT_TRUE(UnallocatedOperand::cast(s[1]->Output())->HasSameAsInputPolicy());
- EXPECT_EQ(finish->id(), s.ToVreg(s[1]->Output()));
- EXPECT_TRUE(s.IsReference(finish->id()));
+ EXPECT_EQ(s.ToVreg(finish), s.ToVreg(s[1]->Output()));
+ EXPECT_TRUE(s.IsReference(finish));
}
@@ -243,8 +261,8 @@ TARGET_TEST_P(InstructionSelectorPhiTest, Doubleness) {
Node* phi = m.Phi(type, param0, param1);
m.Return(phi);
Stream s = m.Build(kAllInstructions);
- EXPECT_EQ(s.IsDouble(phi->id()), s.IsDouble(param0->id()));
- EXPECT_EQ(s.IsDouble(phi->id()), s.IsDouble(param1->id()));
+ EXPECT_EQ(s.IsDouble(phi), s.IsDouble(param0));
+ EXPECT_EQ(s.IsDouble(phi), s.IsDouble(param1));
}
@@ -263,8 +281,8 @@ TARGET_TEST_P(InstructionSelectorPhiTest, Referenceness) {
Node* phi = m.Phi(type, param0, param1);
m.Return(phi);
Stream s = m.Build(kAllInstructions);
- EXPECT_EQ(s.IsReference(phi->id()), s.IsReference(param0->id()));
- EXPECT_EQ(s.IsReference(phi->id()), s.IsReference(param1->id()));
+ EXPECT_EQ(s.IsReference(phi), s.IsReference(param0));
+ EXPECT_EQ(s.IsReference(phi), s.IsReference(param1));
}
@@ -412,9 +430,9 @@ TARGET_TEST_F(InstructionSelectorTest, CallFunctionStubWithDeopt) {
EXPECT_EQ(45, s.ToInt32(call_instr->InputAt(5)));
// Function.
- EXPECT_EQ(function_node->id(), s.ToVreg(call_instr->InputAt(6)));
+ EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(6)));
// Context.
- EXPECT_EQ(context->id(), s.ToVreg(call_instr->InputAt(7)));
+ EXPECT_EQ(s.ToVreg(context), s.ToVreg(call_instr->InputAt(7)));
EXPECT_EQ(kArchRet, s[index++]->arch_opcode());
@@ -504,9 +522,9 @@ TARGET_TEST_F(InstructionSelectorTest,
EXPECT_EQ(45, s.ToInt32(call_instr->InputAt(9)));
// Function.
- EXPECT_EQ(function_node->id(), s.ToVreg(call_instr->InputAt(10)));
+ EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(10)));
// Context.
- EXPECT_EQ(context2->id(), s.ToVreg(call_instr->InputAt(11)));
+ EXPECT_EQ(s.ToVreg(context2), s.ToVreg(call_instr->InputAt(11)));
// Continuation.
EXPECT_EQ(kArchRet, s[index++]->arch_opcode());

Powered by Google App Engine
This is Rietveld 408576698