Index: test/unittests/interpreter/register-translator-unittest.cc |
diff --git a/test/unittests/interpreter/register-translator-unittest.cc b/test/unittests/interpreter/register-translator-unittest.cc |
index 0a3bd00ef2c2f83abc3682cfdf1d91121aaf915e..15199ce8c5a1e11aec1036806674de28b93878a3 100644 |
--- a/test/unittests/interpreter/register-translator-unittest.cc |
+++ b/test/unittests/interpreter/register-translator-unittest.cc |
@@ -52,8 +52,10 @@ class RegisterTranslatorTest : public TestWithIsolateAndZone, |
bool RegisterOperandIsMovable(Bytecode bytecode, int operand_index) override { |
OperandType operand_type = |
Bytecodes::GetOperandType(bytecode, operand_index); |
+ |
+ EXPECT_TRUE(Bytecodes::IsRegisterOperandType(operand_type)); |
if (operand_type == OperandType::kReg8 || |
- operand_type == OperandType::kReg16) { |
+ operand_type == OperandType::kRegOut8) { |
if (operand_index == Bytecodes::NumberOfOperands(bytecode) - 1) { |
return true; |
} |
@@ -74,7 +76,8 @@ class RegisterTranslatorTest : public TestWithIsolateAndZone, |
}; |
const char* const RegisterTranslatorTest::kBadOperandRegex = |
- ".*OperandType::kReg8 && mover\\(\\)->RegisterOperandIsMovable.*"; |
+ ".*OperandType::kReg8 \\|\\| .*OperandType::kRegOut8\\) && " |
+ "mover\\(\\)->RegisterOperandIsMovable.*"; |
TEST_F(RegisterTranslatorTest, TestFrameSizeAdjustmentsForTranslationWindow) { |
EXPECT_EQ(0, RegisterTranslator::RegisterCountAdjustment(0, 0)); |
@@ -157,7 +160,7 @@ TEST_F(RegisterTranslatorTest, NoTranslationRequired) { |
Register param_reg = Register::FromParameterIndex(129, 130); |
operands[0] = param_reg.ToRawOperand(); |
- translator()->TranslateInputRegisters(Bytecode::kLdar, operands, 1); |
+ translator()->TranslateInputRegisters(Bytecode::kAdd, operands, 1); |
translator()->TranslateOutputRegisters(); |
EXPECT_EQ(0, move_count()); |
} |
@@ -172,6 +175,14 @@ TEST_F(RegisterTranslatorTest, TranslationRequired) { |
EXPECT_EQ(1, move_count()); |
EXPECT_TRUE(PopMoveAndMatch(local_reg_translated, window_reg)); |
translator()->TranslateOutputRegisters(); |
+ EXPECT_EQ(1, move_count()); |
+ EXPECT_FALSE(PopMoveAndMatch(window_reg, local_reg_translated)); |
+ |
+ operands[0] = local_reg.ToRawOperand(); |
+ translator()->TranslateInputRegisters(Bytecode::kStar, operands, 1); |
+ EXPECT_EQ(1, move_count()); |
+ EXPECT_FALSE(PopMoveAndMatch(local_reg_translated, window_reg)); |
+ translator()->TranslateOutputRegisters(); |
EXPECT_EQ(2, move_count()); |
EXPECT_TRUE(PopMoveAndMatch(window_reg, local_reg_translated)); |
@@ -181,6 +192,14 @@ TEST_F(RegisterTranslatorTest, TranslationRequired) { |
EXPECT_EQ(3, move_count()); |
EXPECT_TRUE(PopMoveAndMatch(param_reg, window_reg)); |
translator()->TranslateOutputRegisters(); |
+ EXPECT_EQ(3, move_count()); |
+ EXPECT_FALSE(PopMoveAndMatch(window_reg, param_reg)); |
+ |
+ operands[0] = {param_reg.ToRawOperand()}; |
+ translator()->TranslateInputRegisters(Bytecode::kStar, operands, 1); |
+ EXPECT_EQ(3, move_count()); |
+ EXPECT_FALSE(PopMoveAndMatch(local_reg_translated, window_reg)); |
+ translator()->TranslateOutputRegisters(); |
EXPECT_EQ(4, move_count()); |
EXPECT_TRUE(PopMoveAndMatch(window_reg, param_reg)); |
} |