Index: test/unittests/interpreter/bytecode-array-builder-unittest.cc |
diff --git a/test/unittests/interpreter/bytecode-array-builder-unittest.cc b/test/unittests/interpreter/bytecode-array-builder-unittest.cc |
index f70c86d7372d5e4593dc849a99cbf85ea4887329..f4e097342a2355281127a1cd91d9f62d87359064 100644 |
--- a/test/unittests/interpreter/bytecode-array-builder-unittest.cc |
+++ b/test/unittests/interpreter/bytecode-array-builder-unittest.cc |
@@ -22,6 +22,8 @@ class BytecodeArrayBuilderTest : public TestWithIsolateAndZone { |
~BytecodeArrayBuilderTest() override {} |
}; |
+using ToBooleanMode = BytecodeArrayBuilder::ToBooleanMode; |
+ |
TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { |
CanonicalHandleScope canonical(isolate()); |
BytecodeArrayBuilder builder(isolate(), zone(), 0, 1, 131); |
@@ -195,8 +197,8 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { |
// Emit unary operator invocations. |
builder |
- .LogicalNot() // ToBooleanLogicalNot |
- .LogicalNot() // non-ToBoolean LogicalNot |
+ .LogicalNot(ToBooleanMode::kConvertToBoolean) |
+ .LogicalNot(ToBooleanMode::kAlreadyBoolean) |
.TypeOf(); |
// Emit delete |
@@ -241,7 +243,8 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { |
// Short jumps with Imm8 operands |
{ |
BytecodeLabel start, after_jump1, after_jump2, after_jump3, after_jump4, |
- after_jump5, after_jump6, after_jump7; |
+ after_jump5, after_jump6, after_jump7, after_jump8, after_jump9, |
+ after_jump10, after_jump11; |
builder.Bind(&start) |
.Jump(&after_jump1) |
.Bind(&after_jump1) |
@@ -257,6 +260,14 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { |
.Bind(&after_jump6) |
.JumpIfJSReceiver(&after_jump7) |
.Bind(&after_jump7) |
+ .JumpIfTrue(ToBoolean::kConvertToBoolean, &after_jump8) |
+ .Bind(&after_jump8) |
+ .JumpIfTrue(ToBoolean::kAlreadyBoolean, &after_jump9) |
+ .Bind(&after_jump9) |
+ .JumpIfFalse(ToBoolean::kConvertToBoolean, &after_jump10) |
+ .Bind(&after_jump10) |
+ .JumpIfFalse(ToBoolean::kAlreadyBoolean, &after_jump11) |
+ .Bind(&after_jump11) |
.JumpLoop(&start, 0); |
} |
@@ -266,14 +277,10 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { |
BytecodeLabel after_jump; |
builder.Jump(&end[0]) |
.Bind(&after_jump) |
- .LoadTrue() |
- .JumpIfTrue(&end[1]) |
- .LoadTrue() |
- .JumpIfFalse(&end[2]) |
- .LoadLiteral(Smi::kZero) |
- .JumpIfTrue(&end[3]) |
- .LoadLiteral(Smi::kZero) |
- .JumpIfFalse(&end[4]) |
+ .JumpIfTrue(ToBoolean::kConvertToBoolean, &end[1]) |
+ .JumpIfTrue(ToBoolean::kAlreadyBoolean, &end[2]) |
+ .JumpIfFalse(ToBoolean::kConvertToBoolean, &end[3]) |
+ .JumpIfFalse(ToBoolean::kAlreadyBoolean, &end[4]) |
.JumpIfNull(&end[5]) |
.JumpIfNotNull(&end[6]) |
.JumpIfUndefined(&end[7]) |
@@ -283,30 +290,6 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { |
.JumpIfJSReceiver(&end[10]); |
} |
- // Perform an operation that returns boolean value to |
- // generate JumpIfTrue/False |
- { |
- BytecodeLabel after_jump1, after_jump2; |
- builder.CompareOperation(Token::Value::EQ, reg, 1) |
- .JumpIfTrue(&after_jump1) |
- .Bind(&after_jump1) |
- .CompareOperation(Token::Value::EQ, reg, 2) |
- .JumpIfFalse(&after_jump2) |
- .Bind(&after_jump2); |
- } |
- |
- // Perform an operation that returns a non-boolean operation to |
- // generate JumpIfToBooleanTrue/False. |
- { |
- BytecodeLabel after_jump1, after_jump2; |
- builder.BinaryOperation(Token::Value::ADD, reg, 1) |
- .JumpIfTrue(&after_jump1) |
- .Bind(&after_jump1) |
- .BinaryOperation(Token::Value::ADD, reg, 2) |
- .JumpIfFalse(&after_jump2) |
- .Bind(&after_jump2); |
- } |
- |
// Emit set pending message bytecode. |
builder.SetPendingMessage(); |
@@ -439,12 +422,6 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { |
if (!FLAG_ignition_peephole) { |
// Insert entries for bytecodes only emitted by peephole optimizer. |
- scorecard[Bytecodes::ToByte(Bytecode::kLogicalNot)] = 1; |
- scorecard[Bytecodes::ToByte(Bytecode::kJump)] = 1; |
- scorecard[Bytecodes::ToByte(Bytecode::kJumpIfTrue)] = 1; |
- scorecard[Bytecodes::ToByte(Bytecode::kJumpIfFalse)] = 1; |
- scorecard[Bytecodes::ToByte(Bytecode::kJumpIfTrueConstant)] = 1; |
- scorecard[Bytecodes::ToByte(Bytecode::kJumpIfFalseConstant)] = 1; |
scorecard[Bytecodes::ToByte(Bytecode::kAddSmi)] = 1; |
scorecard[Bytecodes::ToByte(Bytecode::kSubSmi)] = 1; |
scorecard[Bytecodes::ToByte(Bytecode::kBitwiseAndSmi)] = 1; |