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

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

Issue 2209633002: [Interpreter] Assign feedback slots for binary operations and use them in ignition. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebased the patch. Created 4 years, 4 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 | « test/cctest/test-feedback-vector.cc ('k') | test/unittests/interpreter/bytecode-array-iterator-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-builder-unittest.cc
diff --git a/test/unittests/interpreter/bytecode-array-builder-unittest.cc b/test/unittests/interpreter/bytecode-array-builder-unittest.cc
index 007b68c06517922872ec07602ae766837a17fb93..3b115897bdcad798758e3c1dc1b1762665cf0d01 100644
--- a/test/unittests/interpreter/bytecode-array-builder-unittest.cc
+++ b/test/unittests/interpreter/bytecode-array-builder-unittest.cc
@@ -64,7 +64,7 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
// Emit Ldar and Star taking care to foil the register optimizer.
builder.StackCheck(0)
.LoadAccumulatorWithRegister(other)
- .BinaryOperation(Token::ADD, reg)
+ .BinaryOperation(Token::ADD, reg, 1)
.StoreAccumulatorInRegister(reg)
.LoadNull();
@@ -123,38 +123,39 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
.CallJSRuntime(Context::SPREAD_ITERABLE_INDEX, wide, 1);
// Emit binary operator invocations.
- builder.BinaryOperation(Token::Value::ADD, reg)
- .BinaryOperation(Token::Value::SUB, reg)
- .BinaryOperation(Token::Value::MUL, reg)
- .BinaryOperation(Token::Value::DIV, reg)
- .BinaryOperation(Token::Value::MOD, reg);
+ builder.BinaryOperation(Token::Value::ADD, reg, 1)
+ .BinaryOperation(Token::Value::SUB, reg, 2)
+ .BinaryOperation(Token::Value::MUL, reg, 3)
+ .BinaryOperation(Token::Value::DIV, reg, 4)
+ .BinaryOperation(Token::Value::MOD, reg, 5);
// Emit bitwise operator invocations
- builder.BinaryOperation(Token::Value::BIT_OR, reg)
- .BinaryOperation(Token::Value::BIT_XOR, reg)
- .BinaryOperation(Token::Value::BIT_AND, reg);
+ builder.BinaryOperation(Token::Value::BIT_OR, reg, 6)
+ .BinaryOperation(Token::Value::BIT_XOR, reg, 7)
+ .BinaryOperation(Token::Value::BIT_AND, reg, 8);
// Emit shift operator invocations
- builder.BinaryOperation(Token::Value::SHL, reg)
- .BinaryOperation(Token::Value::SAR, reg)
- .BinaryOperation(Token::Value::SHR, reg);
+ builder.BinaryOperation(Token::Value::SHL, reg, 9)
+ .BinaryOperation(Token::Value::SAR, reg, 10)
+ .BinaryOperation(Token::Value::SHR, reg, 11);
// Emit peephole optimizations of LdaSmi followed by binary operation.
builder.LoadLiteral(Smi::FromInt(1))
- .BinaryOperation(Token::Value::ADD, reg)
+ .BinaryOperation(Token::Value::ADD, reg, 1)
.LoadLiteral(Smi::FromInt(2))
- .BinaryOperation(Token::Value::SUB, reg)
+ .BinaryOperation(Token::Value::SUB, reg, 2)
.LoadLiteral(Smi::FromInt(3))
- .BinaryOperation(Token::Value::BIT_AND, reg)
+ .BinaryOperation(Token::Value::BIT_AND, reg, 3)
.LoadLiteral(Smi::FromInt(4))
- .BinaryOperation(Token::Value::BIT_OR, reg)
+ .BinaryOperation(Token::Value::BIT_OR, reg, 4)
.LoadLiteral(Smi::FromInt(5))
- .BinaryOperation(Token::Value::SHL, reg)
+ .BinaryOperation(Token::Value::SHL, reg, 5)
.LoadLiteral(Smi::FromInt(6))
- .BinaryOperation(Token::Value::SAR, reg);
+ .BinaryOperation(Token::Value::SAR, reg, 6);
// Emit count operatior invocations
- builder.CountOperation(Token::Value::ADD).CountOperation(Token::Value::SUB);
+ builder.CountOperation(Token::Value::ADD, 1)
+ .CountOperation(Token::Value::SUB, 1);
// Emit unary operator invocations.
builder
@@ -225,9 +226,9 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
.JumpIfFalse(&start);
// Perform an operation that returns a non-boolean operation to
// generate JumpIfToBooleanTrue/False.
- builder.BinaryOperation(Token::Value::ADD, reg)
+ builder.BinaryOperation(Token::Value::ADD, reg, 1)
.JumpIfTrue(&start)
- .BinaryOperation(Token::Value::ADD, reg)
+ .BinaryOperation(Token::Value::ADD, reg, 2)
.JumpIfFalse(&start);
// Insert dummy ops to force longer jumps
for (int i = 0; i < 128; i++) {
@@ -249,9 +250,9 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
.JumpIfFalse(&start);
// Perform an operation that returns a non-boolean operation to
// generate JumpIfToBooleanTrue/False.
- builder.BinaryOperation(Token::Value::ADD, reg)
+ builder.BinaryOperation(Token::Value::ADD, reg, 1)
.JumpIfTrue(&start)
- .BinaryOperation(Token::Value::ADD, reg)
+ .BinaryOperation(Token::Value::ADD, reg, 2)
.JumpIfFalse(&start);
}
@@ -353,9 +354,9 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
// Perform an operation that returns a non-boolean operation to
// generate JumpIfToBooleanTrue/False.
- builder.BinaryOperation(Token::Value::ADD, reg)
+ builder.BinaryOperation(Token::Value::ADD, reg, 1)
.JumpIfTrue(&start)
- .BinaryOperation(Token::Value::ADD, reg)
+ .BinaryOperation(Token::Value::ADD, reg, 2)
.JumpIfFalse(&start);
// Emit generator operations
@@ -563,9 +564,9 @@ TEST_F(BytecodeArrayBuilderTest, ForwardJumps) {
.JumpIfTrue(&near1)
.CompareOperation(Token::Value::EQ, reg)
.JumpIfFalse(&near2)
- .BinaryOperation(Token::Value::ADD, reg)
+ .BinaryOperation(Token::Value::ADD, reg, 1)
.JumpIfTrue(&near3)
- .BinaryOperation(Token::Value::ADD, reg)
+ .BinaryOperation(Token::Value::ADD, reg, 2)
.JumpIfFalse(&near4)
.Bind(&near0)
.Bind(&near1)
@@ -578,22 +579,22 @@ TEST_F(BytecodeArrayBuilderTest, ForwardJumps) {
.JumpIfTrue(&far1)
.CompareOperation(Token::Value::EQ, reg)
.JumpIfFalse(&far2)
- .BinaryOperation(Token::Value::ADD, reg)
+ .BinaryOperation(Token::Value::ADD, reg, 3)
.JumpIfTrue(&far3)
- .BinaryOperation(Token::Value::ADD, reg)
+ .BinaryOperation(Token::Value::ADD, reg, 4)
.JumpIfFalse(&far4);
- for (int i = 0; i < kFarJumpDistance - 18; i++) {
+ for (int i = 0; i < kFarJumpDistance - 20; i++) {
builder.Debugger();
}
builder.Bind(&far0).Bind(&far1).Bind(&far2).Bind(&far3).Bind(&far4);
builder.Return();
Handle<BytecodeArray> array = builder.ToBytecodeArray();
- DCHECK_EQ(array->length(), 36 + kFarJumpDistance - 18 + 1);
+ DCHECK_EQ(array->length(), 40 + kFarJumpDistance - 20 + 1);
BytecodeArrayIterator iterator(array);
CHECK_EQ(iterator.current_bytecode(), Bytecode::kJump);
- CHECK_EQ(iterator.GetImmediateOperand(0), 18);
+ CHECK_EQ(iterator.GetImmediateOperand(0), 20);
iterator.Advance();
// Ignore compare operation.
@@ -601,7 +602,7 @@ TEST_F(BytecodeArrayBuilderTest, ForwardJumps) {
CHECK_EQ(iterator.current_bytecode(),
PeepholeToBoolean(Bytecode::kJumpIfToBooleanTrue));
- CHECK_EQ(iterator.GetImmediateOperand(0), 14);
+ CHECK_EQ(iterator.GetImmediateOperand(0), 16);
iterator.Advance();
// Ignore compare operation.
@@ -609,14 +610,14 @@ TEST_F(BytecodeArrayBuilderTest, ForwardJumps) {
CHECK_EQ(iterator.current_bytecode(),
PeepholeToBoolean(Bytecode::kJumpIfToBooleanFalse));
- CHECK_EQ(iterator.GetImmediateOperand(0), 10);
+ CHECK_EQ(iterator.GetImmediateOperand(0), 12);
iterator.Advance();
// Ignore add operation.
iterator.Advance();
CHECK_EQ(iterator.current_bytecode(), Bytecode::kJumpIfToBooleanTrue);
- CHECK_EQ(iterator.GetImmediateOperand(0), 6);
+ CHECK_EQ(iterator.GetImmediateOperand(0), 7);
iterator.Advance();
// Ignore add operation.
@@ -654,7 +655,7 @@ TEST_F(BytecodeArrayBuilderTest, ForwardJumps) {
CHECK_EQ(iterator.current_bytecode(), Bytecode::kJumpIfToBooleanTrueConstant);
CHECK_EQ(*iterator.GetConstantForIndexOperand(0),
- Smi::FromInt(kFarJumpDistance - 12));
+ Smi::FromInt(kFarJumpDistance - 13));
iterator.Advance();
// Ignore add operation.
@@ -663,7 +664,7 @@ TEST_F(BytecodeArrayBuilderTest, ForwardJumps) {
CHECK_EQ(iterator.current_bytecode(),
Bytecode::kJumpIfToBooleanFalseConstant);
CHECK_EQ(*iterator.GetConstantForIndexOperand(0),
- Smi::FromInt(kFarJumpDistance - 16));
+ Smi::FromInt(kFarJumpDistance - 18));
iterator.Advance();
}
@@ -684,12 +685,12 @@ TEST_F(BytecodeArrayBuilderTest, BackwardJumps) {
.CompareOperation(Token::Value::EQ, reg)
.JumpIfFalse(&label2)
.Bind(&label3)
- .BinaryOperation(Token::Value::ADD, reg)
+ .BinaryOperation(Token::Value::ADD, reg, 1)
.JumpIfTrue(&label3)
.Bind(&label4)
- .BinaryOperation(Token::Value::ADD, reg)
+ .BinaryOperation(Token::Value::ADD, reg, 2)
.JumpIfFalse(&label4);
- for (int i = 0; i < 63; i++) {
+ for (int i = 0; i < 62; i++) {
BytecodeLabel after_jump;
builder.Jump(&label4).Bind(&after_jump);
}
@@ -699,8 +700,8 @@ TEST_F(BytecodeArrayBuilderTest, BackwardJumps) {
builder.Debugger();
}
- builder.BinaryOperation(Token::Value::ADD, reg).JumpIfFalse(&label4);
- builder.BinaryOperation(Token::Value::ADD, reg).JumpIfTrue(&label3);
+ builder.BinaryOperation(Token::Value::ADD, reg, 1).JumpIfFalse(&label4);
+ builder.BinaryOperation(Token::Value::ADD, reg, 2).JumpIfTrue(&label3);
builder.CompareOperation(Token::Value::EQ, reg).JumpIfFalse(&label2);
builder.CompareOperation(Token::Value::EQ, reg).JumpIfTrue(&label1);
builder.Jump(&label0);
@@ -731,18 +732,19 @@ TEST_F(BytecodeArrayBuilderTest, BackwardJumps) {
iterator.Advance();
CHECK_EQ(iterator.current_bytecode(), Bytecode::kJumpIfToBooleanTrue);
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
- CHECK_EQ(iterator.GetImmediateOperand(0), -2);
+ CHECK_EQ(iterator.GetImmediateOperand(0), -3);
iterator.Advance();
// Ignore binary operation.
iterator.Advance();
CHECK_EQ(iterator.current_bytecode(), Bytecode::kJumpIfToBooleanFalse);
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
- CHECK_EQ(iterator.GetImmediateOperand(0), -2);
+ CHECK_EQ(iterator.GetImmediateOperand(0), -3);
iterator.Advance();
- for (int i = 0; i < 63; i++) {
+ for (int i = 0; i < 62; i++) {
CHECK_EQ(iterator.current_bytecode(), Bytecode::kJump);
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
- CHECK_EQ(iterator.GetImmediateOperand(0), -i * 2 - 4);
+ // offset of 5 (3 for binary operation and 2 for jump)
+ CHECK_EQ(iterator.GetImmediateOperand(0), -i * 2 - 5);
iterator.Advance();
}
// Check padding to force wide backwards jumps.
@@ -760,25 +762,25 @@ TEST_F(BytecodeArrayBuilderTest, BackwardJumps) {
iterator.Advance();
CHECK_EQ(iterator.current_bytecode(), Bytecode::kJumpIfToBooleanTrue);
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kDouble);
- CHECK_EQ(iterator.GetImmediateOperand(0), -399);
+ CHECK_EQ(iterator.GetImmediateOperand(0), -401);
iterator.Advance();
// Ignore compare operation.
iterator.Advance();
CHECK_EQ(iterator.current_bytecode(),
PeepholeToBoolean(Bytecode::kJumpIfToBooleanFalse));
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kDouble);
- CHECK_EQ(iterator.GetImmediateOperand(0), -409);
+ CHECK_EQ(iterator.GetImmediateOperand(0), -411);
iterator.Advance();
// Ignore compare operation.
iterator.Advance();
CHECK_EQ(iterator.current_bytecode(),
PeepholeToBoolean(Bytecode::kJumpIfToBooleanTrue));
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kDouble);
- CHECK_EQ(iterator.GetImmediateOperand(0), -419);
+ CHECK_EQ(iterator.GetImmediateOperand(0), -421);
iterator.Advance();
CHECK_EQ(iterator.current_bytecode(), Bytecode::kJump);
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kDouble);
- CHECK_EQ(iterator.GetImmediateOperand(0), -425);
+ CHECK_EQ(iterator.GetImmediateOperand(0), -427);
iterator.Advance();
CHECK_EQ(iterator.current_bytecode(), Bytecode::kReturn);
iterator.Advance();
« no previous file with comments | « test/cctest/test-feedback-vector.cc ('k') | test/unittests/interpreter/bytecode-array-iterator-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698