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 e3eb7a9a099c8a80ce4c013eae03aaae1a6fd909..0bb0f9757a74fc7afc37c9d0856e516106191355 100644 |
--- a/test/unittests/interpreter/bytecode-array-writer-unittest.cc |
+++ b/test/unittests/interpreter/bytecode-array-writer-unittest.cc |
@@ -28,93 +28,78 @@ class BytecodeArrayWriterUnittest : public TestWithIsolateAndZone { |
SourcePositionTableBuilder::RECORD_SOURCE_POSITIONS) {} |
~BytecodeArrayWriterUnittest() override {} |
- void Write(BytecodeNode* node, const BytecodeSourceInfo& info); |
- void Write(Bytecode bytecode, |
- const BytecodeSourceInfo& info = BytecodeSourceInfo()); |
+ void Write(Bytecode bytecode, BytecodeSourceInfo info = BytecodeSourceInfo()); |
void Write(Bytecode bytecode, uint32_t operand0, |
- const BytecodeSourceInfo& info = BytecodeSourceInfo()); |
+ BytecodeSourceInfo info = BytecodeSourceInfo()); |
void Write(Bytecode bytecode, uint32_t operand0, uint32_t operand1, |
- |
- const BytecodeSourceInfo& info = BytecodeSourceInfo()); |
+ BytecodeSourceInfo info = BytecodeSourceInfo()); |
void Write(Bytecode bytecode, uint32_t operand0, uint32_t operand1, |
- uint32_t operand2, |
- const BytecodeSourceInfo& info = BytecodeSourceInfo()); |
+ uint32_t operand2, BytecodeSourceInfo info = BytecodeSourceInfo()); |
void Write(Bytecode bytecode, uint32_t operand0, uint32_t operand1, |
uint32_t operand2, uint32_t operand3, |
- const BytecodeSourceInfo& info = BytecodeSourceInfo()); |
+ BytecodeSourceInfo info = BytecodeSourceInfo()); |
void WriteJump(Bytecode bytecode, BytecodeLabel* label, |
- const BytecodeSourceInfo& info = BytecodeSourceInfo()); |
- void WriteJumpLoop(Bytecode bytecode, BytecodeLabel* label, int depth); |
+ BytecodeSourceInfo info = BytecodeSourceInfo()); |
+ void WriteJumpLoop(Bytecode bytecode, BytecodeLabel* label, int depth, |
+ BytecodeSourceInfo info = BytecodeSourceInfo()); |
BytecodeArrayWriter* writer() { return &bytecode_array_writer_; } |
ZoneVector<unsigned char>* bytecodes() { return writer()->bytecodes(); } |
SourcePositionTableBuilder* source_position_table_builder() { |
return writer()->source_position_table_builder(); |
} |
- int max_register_count() { return writer()->max_register_count(); } |
private: |
ConstantArrayBuilder constant_array_builder_; |
BytecodeArrayWriter bytecode_array_writer_; |
}; |
-void BytecodeArrayWriterUnittest::Write(BytecodeNode* node, |
- const BytecodeSourceInfo& info) { |
- if (info.is_valid()) { |
- node->source_info().Clone(info); |
- } |
- writer()->Write(node); |
-} |
- |
void BytecodeArrayWriterUnittest::Write(Bytecode bytecode, |
- const BytecodeSourceInfo& info) { |
- BytecodeNode node(bytecode); |
- Write(&node, info); |
+ BytecodeSourceInfo info) { |
+ BytecodeNode node(bytecode, &info); |
+ writer()->Write(&node); |
} |
void BytecodeArrayWriterUnittest::Write(Bytecode bytecode, uint32_t operand0, |
- const BytecodeSourceInfo& info) { |
- BytecodeNode node(bytecode, operand0); |
- Write(&node, info); |
+ BytecodeSourceInfo info) { |
+ BytecodeNode node(bytecode, operand0, &info); |
+ writer()->Write(&node); |
} |
void BytecodeArrayWriterUnittest::Write(Bytecode bytecode, uint32_t operand0, |
uint32_t operand1, |
- const BytecodeSourceInfo& info) { |
- BytecodeNode node(bytecode, operand0, operand1); |
- Write(&node, info); |
+ BytecodeSourceInfo info) { |
+ BytecodeNode node(bytecode, operand0, operand1, &info); |
+ writer()->Write(&node); |
} |
void BytecodeArrayWriterUnittest::Write(Bytecode bytecode, uint32_t operand0, |
uint32_t operand1, uint32_t operand2, |
- const BytecodeSourceInfo& info) { |
- BytecodeNode node(bytecode, operand0, operand1, operand2); |
- Write(&node, info); |
+ BytecodeSourceInfo info) { |
+ BytecodeNode node(bytecode, operand0, operand1, operand2, &info); |
+ writer()->Write(&node); |
} |
void BytecodeArrayWriterUnittest::Write(Bytecode bytecode, uint32_t operand0, |
uint32_t operand1, uint32_t operand2, |
uint32_t operand3, |
- const BytecodeSourceInfo& info) { |
- BytecodeNode node(bytecode, operand0, operand1, operand2, operand3); |
- Write(&node, info); |
+ BytecodeSourceInfo info) { |
+ BytecodeNode node(bytecode, operand0, operand1, operand2, operand3, &info); |
+ writer()->Write(&node); |
} |
void BytecodeArrayWriterUnittest::WriteJump(Bytecode bytecode, |
BytecodeLabel* label, |
- const BytecodeSourceInfo& info) { |
- BytecodeNode node(bytecode, 0); |
- if (info.is_valid()) { |
- node.source_info().Clone(info); |
- } |
+ BytecodeSourceInfo info) { |
+ BytecodeNode node(bytecode, 0, &info); |
writer()->WriteJump(&node, label); |
} |
void BytecodeArrayWriterUnittest::WriteJumpLoop(Bytecode bytecode, |
- BytecodeLabel* label, |
- int depth) { |
- BytecodeNode node(bytecode, 0, depth); |
+ BytecodeLabel* label, int depth, |
+ BytecodeSourceInfo info) { |
+ BytecodeNode node(bytecode, 0, depth, &info); |
writer()->WriteJump(&node, label); |
} |
@@ -123,19 +108,15 @@ TEST_F(BytecodeArrayWriterUnittest, SimpleExample) { |
Write(Bytecode::kStackCheck, {10, false}); |
CHECK_EQ(bytecodes()->size(), 1); |
- CHECK_EQ(max_register_count(), 0); |
Write(Bytecode::kLdaSmi, 127, {55, true}); |
CHECK_EQ(bytecodes()->size(), 3); |
- CHECK_EQ(max_register_count(), 0); |
Write(Bytecode::kLdar, Register(200).ToOperand()); |
CHECK_EQ(bytecodes()->size(), 7); |
- CHECK_EQ(max_register_count(), 201); |
Write(Bytecode::kReturn, {70, true}); |
CHECK_EQ(bytecodes()->size(), 8); |
- CHECK_EQ(max_register_count(), 201); |
static const uint8_t bytes[] = {B(StackCheck), B(LdaSmi), U8(127), B(Wide), |
B(Ldar), R16(200), B(Return)}; |
@@ -167,7 +148,7 @@ TEST_F(BytecodeArrayWriterUnittest, ComplexExample) { |
// clang-format off |
/* 0 30 E> */ B(StackCheck), |
/* 1 42 S> */ B(LdaConstant), U8(0), |
- /* 3 42 E> */ B(Star), R8(1), |
+ /* 3 42 E> */ B(Add), R8(1), U8(1), |
/* 5 68 S> */ B(JumpIfUndefined), U8(39), |
/* 7 */ B(JumpIfNull), U8(37), |
/* 9 */ B(ToObject), R8(3), |
@@ -192,30 +173,23 @@ TEST_F(BytecodeArrayWriterUnittest, ComplexExample) { |
}; |
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}, {45, 85, true}}; |
+ {0, 30, false}, {1, 42, true}, {3, 42, false}, {6, 68, true}, |
+ {18, 63, true}, {32, 54, false}, {37, 85, true}, {46, 85, true}}; |
BytecodeLabel back_jump, jump_for_in, jump_end_1, jump_end_2, jump_end_3; |
#define R(i) static_cast<uint32_t>(Register(i).ToOperand()) |
Write(Bytecode::kStackCheck, {30, false}); |
Write(Bytecode::kLdaConstant, U8(0), {42, true}); |
- CHECK_EQ(max_register_count(), 0); |
- Write(Bytecode::kStar, R(1), {42, false}); |
- CHECK_EQ(max_register_count(), 2); |
+ Write(Bytecode::kAdd, R(1), U8(1), {42, false}); |
WriteJump(Bytecode::kJumpIfUndefined, &jump_end_1, {68, true}); |
WriteJump(Bytecode::kJumpIfNull, &jump_end_2); |
Write(Bytecode::kToObject, R(3)); |
- CHECK_EQ(max_register_count(), 4); |
Write(Bytecode::kForInPrepare, R(3), R(4)); |
- CHECK_EQ(max_register_count(), 7); |
Write(Bytecode::kLdaZero); |
- CHECK_EQ(max_register_count(), 7); |
Write(Bytecode::kStar, R(7)); |
- CHECK_EQ(max_register_count(), 8); |
writer()->BindLabel(&back_jump); |
Write(Bytecode::kForInContinue, R(7), R(6), {63, true}); |
- CHECK_EQ(max_register_count(), 8); |
WriteJump(Bytecode::kJumpIfFalse, &jump_end_3); |
Write(Bytecode::kForInNext, R(3), R(7), R(4), U8(1)); |
WriteJump(Bytecode::kJumpIfUndefined, &jump_for_in); |
@@ -233,7 +207,6 @@ TEST_F(BytecodeArrayWriterUnittest, ComplexExample) { |
writer()->BindLabel(&jump_end_3); |
Write(Bytecode::kLdaUndefined); |
Write(Bytecode::kReturn, {85, true}); |
- CHECK_EQ(max_register_count(), 8); |
#undef R |
CHECK_EQ(bytecodes()->size(), arraysize(expected_bytes)); |