Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1360)

Unified Diff: test/unittests/interpreter/bytecode-array-writer-unittest.cc

Issue 2360193003: Revert of [Interpreter] Optimize BytecodeArrayBuilder and BytecodeArrayWriter. (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/v8.gyp ('k') | test/unittests/interpreter/bytecode-dead-code-optimizer-unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 0bb0f9757a74fc7afc37c9d0856e516106191355..e3eb7a9a099c8a80ce4c013eae03aaae1a6fd909 100644
--- a/test/unittests/interpreter/bytecode-array-writer-unittest.cc
+++ b/test/unittests/interpreter/bytecode-array-writer-unittest.cc
@@ -28,78 +28,93 @@
SourcePositionTableBuilder::RECORD_SOURCE_POSITIONS) {}
~BytecodeArrayWriterUnittest() override {}
- void Write(Bytecode bytecode, BytecodeSourceInfo info = BytecodeSourceInfo());
+ void Write(BytecodeNode* node, const BytecodeSourceInfo& info);
+ void Write(Bytecode bytecode,
+ const BytecodeSourceInfo& info = BytecodeSourceInfo());
void Write(Bytecode bytecode, uint32_t operand0,
- BytecodeSourceInfo info = BytecodeSourceInfo());
+ const BytecodeSourceInfo& info = BytecodeSourceInfo());
void Write(Bytecode bytecode, uint32_t operand0, uint32_t operand1,
- BytecodeSourceInfo info = BytecodeSourceInfo());
+
+ const BytecodeSourceInfo& info = BytecodeSourceInfo());
void Write(Bytecode bytecode, uint32_t operand0, uint32_t operand1,
- uint32_t operand2, BytecodeSourceInfo info = BytecodeSourceInfo());
+ uint32_t operand2,
+ const BytecodeSourceInfo& info = BytecodeSourceInfo());
void Write(Bytecode bytecode, uint32_t operand0, uint32_t operand1,
uint32_t operand2, uint32_t operand3,
- BytecodeSourceInfo info = BytecodeSourceInfo());
+ const BytecodeSourceInfo& info = BytecodeSourceInfo());
void WriteJump(Bytecode bytecode, BytecodeLabel* label,
- BytecodeSourceInfo info = BytecodeSourceInfo());
- void WriteJumpLoop(Bytecode bytecode, BytecodeLabel* label, int depth,
- BytecodeSourceInfo info = BytecodeSourceInfo());
+ 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(); }
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,
- BytecodeSourceInfo info) {
- BytecodeNode node(bytecode, &info);
- writer()->Write(&node);
-}
-
-void BytecodeArrayWriterUnittest::Write(Bytecode bytecode, uint32_t operand0,
- BytecodeSourceInfo info) {
- BytecodeNode node(bytecode, operand0, &info);
- writer()->Write(&node);
+ const BytecodeSourceInfo& info) {
+ BytecodeNode node(bytecode);
+ Write(&node, info);
+}
+
+void BytecodeArrayWriterUnittest::Write(Bytecode bytecode, uint32_t operand0,
+ const BytecodeSourceInfo& info) {
+ BytecodeNode node(bytecode, operand0);
+ Write(&node, info);
}
void BytecodeArrayWriterUnittest::Write(Bytecode bytecode, uint32_t operand0,
uint32_t operand1,
- BytecodeSourceInfo info) {
- BytecodeNode node(bytecode, operand0, operand1, &info);
- writer()->Write(&node);
+ const BytecodeSourceInfo& info) {
+ BytecodeNode node(bytecode, operand0, operand1);
+ Write(&node, info);
}
void BytecodeArrayWriterUnittest::Write(Bytecode bytecode, uint32_t operand0,
uint32_t operand1, uint32_t operand2,
- BytecodeSourceInfo info) {
- BytecodeNode node(bytecode, operand0, operand1, operand2, &info);
- writer()->Write(&node);
+ const BytecodeSourceInfo& info) {
+ BytecodeNode node(bytecode, operand0, operand1, operand2);
+ Write(&node, info);
}
void BytecodeArrayWriterUnittest::Write(Bytecode bytecode, uint32_t operand0,
uint32_t operand1, uint32_t operand2,
uint32_t operand3,
- BytecodeSourceInfo info) {
- BytecodeNode node(bytecode, operand0, operand1, operand2, operand3, &info);
- writer()->Write(&node);
+ const BytecodeSourceInfo& info) {
+ BytecodeNode node(bytecode, operand0, operand1, operand2, operand3);
+ Write(&node, info);
}
void BytecodeArrayWriterUnittest::WriteJump(Bytecode bytecode,
BytecodeLabel* label,
- BytecodeSourceInfo info) {
- BytecodeNode node(bytecode, 0, &info);
+ const BytecodeSourceInfo& info) {
+ BytecodeNode node(bytecode, 0);
+ if (info.is_valid()) {
+ node.source_info().Clone(info);
+ }
writer()->WriteJump(&node, label);
}
void BytecodeArrayWriterUnittest::WriteJumpLoop(Bytecode bytecode,
- BytecodeLabel* label, int depth,
- BytecodeSourceInfo info) {
- BytecodeNode node(bytecode, 0, depth, &info);
+ BytecodeLabel* label,
+ int depth) {
+ BytecodeNode node(bytecode, 0, depth);
writer()->WriteJump(&node, label);
}
@@ -108,15 +123,19 @@
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)};
@@ -148,7 +167,7 @@
// clang-format off
/* 0 30 E> */ B(StackCheck),
/* 1 42 S> */ B(LdaConstant), U8(0),
- /* 3 42 E> */ B(Add), R8(1), U8(1),
+ /* 3 42 E> */ B(Star), R8(1),
/* 5 68 S> */ B(JumpIfUndefined), U8(39),
/* 7 */ B(JumpIfNull), U8(37),
/* 9 */ B(ToObject), R8(3),
@@ -173,23 +192,30 @@
};
static const PositionTableEntry expected_positions[] = {
- {0, 30, false}, {1, 42, true}, {3, 42, false}, {6, 68, true},
- {18, 63, true}, {32, 54, false}, {37, 85, true}, {46, 85, true}};
+ {0, 30, false}, {1, 42, true}, {3, 42, false}, {5, 68, 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;
#define R(i) static_cast<uint32_t>(Register(i).ToOperand())
Write(Bytecode::kStackCheck, {30, false});
Write(Bytecode::kLdaConstant, U8(0), {42, true});
- Write(Bytecode::kAdd, R(1), U8(1), {42, false});
+ CHECK_EQ(max_register_count(), 0);
+ Write(Bytecode::kStar, R(1), {42, false});
+ CHECK_EQ(max_register_count(), 2);
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);
@@ -207,6 +233,7 @@
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));
« no previous file with comments | « src/v8.gyp ('k') | test/unittests/interpreter/bytecode-dead-code-optimizer-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698