Index: test/unittests/interpreter/bytecode-array-writer-unittest.cc |
diff --git a/test/unittests/interpreter/bytecode-array-writer-unittest.cc b/test/unittests/interpreter/bytecode-array-writer-unittest.cc |
index e67f76fa066248fb17d069334390b28e0801b5ae..e3eb7a9a099c8a80ce4c013eae03aaae1a6fd909 100644 |
--- a/test/unittests/interpreter/bytecode-array-writer-unittest.cc |
+++ b/test/unittests/interpreter/bytecode-array-writer-unittest.cc |
@@ -44,8 +44,8 @@ class BytecodeArrayWriterUnittest : public TestWithIsolateAndZone { |
const BytecodeSourceInfo& info = BytecodeSourceInfo()); |
void WriteJump(Bytecode bytecode, BytecodeLabel* label, |
- |
const BytecodeSourceInfo& info = BytecodeSourceInfo()); |
+ void WriteJumpLoop(Bytecode bytecode, BytecodeLabel* label, int depth); |
BytecodeArrayWriter* writer() { return &bytecode_array_writer_; } |
ZoneVector<unsigned char>* bytecodes() { return writer()->bytecodes(); } |
@@ -111,6 +111,13 @@ void BytecodeArrayWriterUnittest::WriteJump(Bytecode bytecode, |
writer()->WriteJump(&node, label); |
} |
+void BytecodeArrayWriterUnittest::WriteJumpLoop(Bytecode bytecode, |
+ BytecodeLabel* label, |
+ int depth) { |
+ BytecodeNode node(bytecode, 0, depth); |
+ writer()->WriteJump(&node, label); |
+} |
+ |
TEST_F(BytecodeArrayWriterUnittest, SimpleExample) { |
CHECK_EQ(bytecodes()->size(), 0); |
@@ -161,14 +168,14 @@ TEST_F(BytecodeArrayWriterUnittest, ComplexExample) { |
/* 0 30 E> */ B(StackCheck), |
/* 1 42 S> */ B(LdaConstant), U8(0), |
/* 3 42 E> */ B(Star), R8(1), |
- /* 5 68 S> */ B(JumpIfUndefined), U8(38), |
- /* 7 */ B(JumpIfNull), U8(36), |
+ /* 5 68 S> */ B(JumpIfUndefined), U8(39), |
+ /* 7 */ B(JumpIfNull), U8(37), |
/* 9 */ B(ToObject), R8(3), |
/* 11 */ B(ForInPrepare), R8(3), R8(4), |
/* 14 */ B(LdaZero), |
/* 15 */ B(Star), R8(7), |
/* 17 63 S> */ B(ForInContinue), R8(7), R8(6), |
- /* 20 */ B(JumpIfFalse), U8(23), |
+ /* 20 */ B(JumpIfFalse), U8(24), |
/* 22 */ B(ForInNext), R8(3), R8(7), R8(4), U8(1), |
/* 27 */ B(JumpIfUndefined), U8(10), |
/* 29 */ B(Star), R8(0), |
@@ -178,15 +185,15 @@ TEST_F(BytecodeArrayWriterUnittest, ComplexExample) { |
/* 36 85 S> */ B(Return), |
/* 37 */ B(ForInStep), R8(7), |
/* 39 */ B(Star), R8(7), |
- /* 41 */ B(Jump), U8(-24), |
- /* 43 */ B(LdaUndefined), |
- /* 44 85 S> */ B(Return), |
+ /* 41 */ B(JumpLoop), U8(-24), U8(0), |
+ /* 44 */ B(LdaUndefined), |
+ /* 45 85 S> */ B(Return), |
// clang-format on |
}; |
static const PositionTableEntry expected_positions[] = { |
{0, 30, false}, {1, 42, true}, {3, 42, false}, {5, 68, true}, |
- {17, 63, true}, {31, 54, false}, {36, 85, true}, {44, 85, true}}; |
+ {17, 63, true}, {31, 54, false}, {36, 85, true}, {45, 85, true}}; |
BytecodeLabel back_jump, jump_for_in, jump_end_1, jump_end_2, jump_end_3; |
@@ -220,7 +227,7 @@ TEST_F(BytecodeArrayWriterUnittest, ComplexExample) { |
writer()->BindLabel(&jump_for_in); |
Write(Bytecode::kForInStep, R(7)); |
Write(Bytecode::kStar, R(7)); |
- WriteJump(Bytecode::kJump, &back_jump); |
+ WriteJumpLoop(Bytecode::kJumpLoop, &back_jump, 0); |
writer()->BindLabel(&jump_end_1); |
writer()->BindLabel(&jump_end_2); |
writer()->BindLabel(&jump_end_3); |