Index: src/interpreter/bytecode-array-builder.cc |
diff --git a/src/interpreter/bytecode-array-builder.cc b/src/interpreter/bytecode-array-builder.cc |
index 56cdfb9d82d9873fba68eb3914601cd4d8c54698..af3542197ed5b5e98334017c75be06cba297e52d 100644 |
--- a/src/interpreter/bytecode-array-builder.cc |
+++ b/src/interpreter/bytecode-array-builder.cc |
@@ -408,7 +408,7 @@ bool BytecodeArrayBuilder::RegisterOperandIsMovable(Bytecode bytecode, |
// need for a large translation window. |
OperandType operand_type = Bytecodes::GetOperandType(bytecode, operand_index); |
if (operand_type != OperandType::kReg8 && |
- operand_type != OperandType::kReg16) { |
rmcilroy
2016/01/26 16:49:51
Purposefully dropping kReg16 from here?
oth
2016/01/26 17:55:53
Yes, moves to the translation window are not neede
|
+ operand_type != OperandType::kRegOut8) { |
return false; |
} else if (operand_index + 1 == Bytecodes::NumberOfOperands(bytecode)) { |
return true; |
@@ -1413,8 +1413,11 @@ bool BytecodeArrayBuilder::OperandIsValid(Bytecode bytecode, int operand_index, |
} |
// Fall-through to kReg8 case. |
case OperandType::kReg8: |
+ case OperandType::kRegOut8: |
return RegisterIsValid(Register::FromRawOperand(operand_value), |
operand_type); |
+ case OperandType::kRegOutPair8: |
+ case OperandType::kRegOutPair16: |
case OperandType::kRegPair8: |
case OperandType::kRegPair16: { |
Register reg0 = Register::FromRawOperand(operand_value); |
@@ -1422,8 +1425,8 @@ bool BytecodeArrayBuilder::OperandIsValid(Bytecode bytecode, int operand_index, |
return RegisterIsValid(reg0, operand_type) && |
RegisterIsValid(reg1, operand_type); |
} |
- case OperandType::kRegTriple8: |
- case OperandType::kRegTriple16: { |
+ case OperandType::kRegOutTriple8: |
+ case OperandType::kRegOutTriple16: { |
Register reg0 = Register::FromRawOperand(operand_value); |
Register reg1 = Register(reg0.index() + 1); |
Register reg2 = Register(reg0.index() + 2); |
@@ -1436,7 +1439,8 @@ bool BytecodeArrayBuilder::OperandIsValid(Bytecode bytecode, int operand_index, |
return true; |
} |
// Fall-through to kReg16 case. |
- case OperandType::kReg16: { |
+ case OperandType::kReg16: |
+ case OperandType::kRegOut16: { |
Register reg = Register::FromRawOperand(operand_value); |
return RegisterIsValid(reg, operand_type); |
} |