| Index: test/unittests/interpreter/bytecodes-unittest.cc
|
| diff --git a/test/unittests/interpreter/bytecodes-unittest.cc b/test/unittests/interpreter/bytecodes-unittest.cc
|
| index 3e425a1df48f968acd366bf287519d0cdcf5c231..1cf12a05c5a92493cd3e4c7d7788dffe4fc8f30b 100644
|
| --- a/test/unittests/interpreter/bytecodes-unittest.cc
|
| +++ b/test/unittests/interpreter/bytecodes-unittest.cc
|
| @@ -76,9 +76,13 @@ TEST(OperandConversion, RegistersParametersNoOverlap) {
|
| }
|
|
|
| TEST(OperandScaling, ScalableAndNonScalable) {
|
| - for (OperandScale operand_scale = OperandScale::kSingle;
|
| - operand_scale <= OperandScale::kMaxValid;
|
| - operand_scale = Bytecodes::NextOperandScale(operand_scale)) {
|
| + const OperandScale kOperandScales[] = {
|
| +#define VALUE(Name, _) OperandScale::k##Name,
|
| + OPERAND_SCALE_LIST(VALUE)
|
| +#undef VALUE
|
| + };
|
| +
|
| + for (OperandScale operand_scale : kOperandScales) {
|
| int scale = static_cast<int>(operand_scale);
|
| CHECK_EQ(Bytecodes::Size(Bytecode::kCallRuntime, operand_scale),
|
| 1 + 2 + 2 * scale);
|
| @@ -304,13 +308,71 @@ TEST(Bytecodes, PrefixMappings) {
|
| }
|
| }
|
|
|
| -TEST(OperandScale, PrefixesScale) {
|
| - CHECK(Bytecodes::NextOperandScale(OperandScale::kSingle) ==
|
| - OperandScale::kDouble);
|
| - CHECK(Bytecodes::NextOperandScale(OperandScale::kDouble) ==
|
| - OperandScale::kQuadruple);
|
| - CHECK(Bytecodes::NextOperandScale(OperandScale::kQuadruple) ==
|
| - OperandScale::kInvalid);
|
| +TEST(Bytecodes, OperandScales) {
|
| + CHECK_EQ(Bytecodes::OperandSizesToScale(OperandSize::kByte),
|
| + OperandScale::kSingle);
|
| + CHECK_EQ(Bytecodes::OperandSizesToScale(OperandSize::kShort),
|
| + OperandScale::kDouble);
|
| + CHECK_EQ(Bytecodes::OperandSizesToScale(OperandSize::kQuad),
|
| + OperandScale::kQuadruple);
|
| + CHECK_EQ(
|
| + Bytecodes::OperandSizesToScale(OperandSize::kShort, OperandSize::kShort,
|
| + OperandSize::kShort, OperandSize::kShort),
|
| + OperandScale::kDouble);
|
| + CHECK_EQ(
|
| + Bytecodes::OperandSizesToScale(OperandSize::kQuad, OperandSize::kShort,
|
| + OperandSize::kShort, OperandSize::kShort),
|
| + OperandScale::kQuadruple);
|
| + CHECK_EQ(
|
| + Bytecodes::OperandSizesToScale(OperandSize::kShort, OperandSize::kQuad,
|
| + OperandSize::kShort, OperandSize::kShort),
|
| + OperandScale::kQuadruple);
|
| + CHECK_EQ(
|
| + Bytecodes::OperandSizesToScale(OperandSize::kShort, OperandSize::kShort,
|
| + OperandSize::kQuad, OperandSize::kShort),
|
| + OperandScale::kQuadruple);
|
| + CHECK_EQ(
|
| + Bytecodes::OperandSizesToScale(OperandSize::kShort, OperandSize::kShort,
|
| + OperandSize::kShort, OperandSize::kQuad),
|
| + OperandScale::kQuadruple);
|
| +}
|
| +
|
| +TEST(Bytecodes, SizesForSignedOperands) {
|
| + CHECK(Bytecodes::SizeForSignedOperand(0) == OperandSize::kByte);
|
| + CHECK(Bytecodes::SizeForSignedOperand(kMaxInt8) == OperandSize::kByte);
|
| + CHECK(Bytecodes::SizeForSignedOperand(kMinInt8) == OperandSize::kByte);
|
| + CHECK(Bytecodes::SizeForSignedOperand(kMaxInt8 + 1) == OperandSize::kShort);
|
| + CHECK(Bytecodes::SizeForSignedOperand(kMinInt8 - 1) == OperandSize::kShort);
|
| + CHECK(Bytecodes::SizeForSignedOperand(kMaxInt16) == OperandSize::kShort);
|
| + CHECK(Bytecodes::SizeForSignedOperand(kMinInt16) == OperandSize::kShort);
|
| + CHECK(Bytecodes::SizeForSignedOperand(kMaxInt16 + 1) == OperandSize::kQuad);
|
| + CHECK(Bytecodes::SizeForSignedOperand(kMinInt16 - 1) == OperandSize::kQuad);
|
| + CHECK(Bytecodes::SizeForSignedOperand(kMaxInt) == OperandSize::kQuad);
|
| + CHECK(Bytecodes::SizeForSignedOperand(kMinInt) == OperandSize::kQuad);
|
| +}
|
| +
|
| +TEST(Bytecodes, SizesForUnsignedOperands) {
|
| + // int overloads
|
| + CHECK(Bytecodes::SizeForUnsignedOperand(0) == OperandSize::kByte);
|
| + CHECK(Bytecodes::SizeForUnsignedOperand(kMaxUInt8) == OperandSize::kByte);
|
| + CHECK(Bytecodes::SizeForUnsignedOperand(kMaxUInt8 + 1) ==
|
| + OperandSize::kShort);
|
| + CHECK(Bytecodes::SizeForUnsignedOperand(kMaxUInt16) == OperandSize::kShort);
|
| + CHECK(Bytecodes::SizeForUnsignedOperand(kMaxUInt16 + 1) ==
|
| + OperandSize::kQuad);
|
| + // size_t overloads
|
| + CHECK(Bytecodes::SizeForUnsignedOperand(static_cast<size_t>(0)) ==
|
| + OperandSize::kByte);
|
| + CHECK(Bytecodes::SizeForUnsignedOperand(static_cast<size_t>(kMaxUInt8)) ==
|
| + OperandSize::kByte);
|
| + CHECK(Bytecodes::SizeForUnsignedOperand(static_cast<size_t>(kMaxUInt8 + 1)) ==
|
| + OperandSize::kShort);
|
| + CHECK(Bytecodes::SizeForUnsignedOperand(static_cast<size_t>(kMaxUInt16)) ==
|
| + OperandSize::kShort);
|
| + CHECK(Bytecodes::SizeForUnsignedOperand(
|
| + static_cast<size_t>(kMaxUInt16 + 1)) == OperandSize::kQuad);
|
| + CHECK(Bytecodes::SizeForUnsignedOperand(static_cast<size_t>(kMaxUInt32)) ==
|
| + OperandSize::kQuad);
|
| }
|
|
|
| TEST(OperandScale, PrefixesRequired) {
|
|
|