Index: test/unittests/interpreter/bytecode-array-random-iterator-unittest.cc |
diff --git a/test/unittests/interpreter/bytecode-array-reverse-iterator-unittest.cc b/test/unittests/interpreter/bytecode-array-random-iterator-unittest.cc |
similarity index 87% |
rename from test/unittests/interpreter/bytecode-array-reverse-iterator-unittest.cc |
rename to test/unittests/interpreter/bytecode-array-random-iterator-unittest.cc |
index 0782cc8e599e0ea64706160eff78a97eeb7182ae..6e1ee07565347ac954578bf444c52a7d7be44f33 100644 |
--- a/test/unittests/interpreter/bytecode-array-reverse-iterator-unittest.cc |
+++ b/test/unittests/interpreter/bytecode-array-random-iterator-unittest.cc |
@@ -5,20 +5,20 @@ |
#include "src/v8.h" |
#include "src/interpreter/bytecode-array-builder.h" |
-#include "src/interpreter/bytecode-array-reverse-iterator.h" |
+#include "src/interpreter/bytecode-array-random-iterator.h" |
#include "test/unittests/test-utils.h" |
namespace v8 { |
namespace internal { |
namespace interpreter { |
-class BytecodeArrayReverseIteratorTest : public TestWithIsolateAndZone { |
+class BytecodeArrayRandomIteratorTest : public TestWithIsolateAndZone { |
public: |
- BytecodeArrayReverseIteratorTest() {} |
- ~BytecodeArrayReverseIteratorTest() override {} |
+ BytecodeArrayRandomIteratorTest() {} |
+ ~BytecodeArrayRandomIteratorTest() override {} |
}; |
-TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
+TEST_F(BytecodeArrayRandomIteratorTest, IteratesBytecodeArrayBackwards) { |
// Use a builder to create an array with containing multiple bytecodes |
// with 0, 1 and 2 operands. |
BytecodeArrayBuilder builder(isolate(), zone(), 3, 3, 0); |
@@ -64,16 +64,18 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
// Test iterator sees the expected output from the builder. |
Handle<BytecodeArray> bytecodeArray = builder.ToBytecodeArray(isolate()); |
- BytecodeArrayReverseIterator iterator(bytecodeArray, zone()); |
+ BytecodeArrayRandomIterator iterator(bytecodeArray, zone()); |
const int kPrefixByteSize = 1; |
int offset = bytecodeArray->length(); |
+ iterator.GoToEnd(); |
+ |
offset -= Bytecodes::Size(Bytecode::kReturn, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kReturn); |
CHECK_EQ(iterator.current_offset(), offset); |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kLdaGlobal, OperandScale::kQuadruple) + |
kPrefixByteSize; |
@@ -82,14 +84,14 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kQuadruple); |
CHECK_EQ(iterator.current_bytecode_size(), 10); |
CHECK_EQ(iterator.GetIndexOperand(1), 0x10000000u); |
- iterator.Advance(); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kDebugger, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kDebugger); |
CHECK_EQ(iterator.current_offset(), offset); |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kCallRuntime, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kCallRuntime); |
@@ -98,8 +100,8 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
CHECK_EQ(iterator.GetRuntimeIdOperand(0), Runtime::kLoadIC_Miss); |
CHECK_EQ(iterator.GetRegisterOperand(1).index(), reg_0.index()); |
CHECK_EQ(iterator.GetRegisterCountOperand(2), 1u); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kForInPrepare, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kForInPrepare); |
@@ -109,8 +111,8 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); |
CHECK_EQ(iterator.GetRegisterOperand(1).index(), reg_0.index()); |
CHECK_EQ(iterator.GetRegisterOperandRange(1), 3); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= |
Bytecodes::Size(Bytecode::kCallRuntimeForPair, OperandScale::kSingle); |
@@ -123,8 +125,8 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
CHECK_EQ(iterator.GetRegisterCountOperand(2), 1u); |
CHECK_EQ(iterator.GetRegisterOperand(3).index(), reg_0.index()); |
CHECK_EQ(iterator.GetRegisterOperandRange(3), 2); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar); |
@@ -132,8 +134,8 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
CHECK_EQ(iterator.GetRegisterOperand(0).index(), param.index()); |
CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kAdd, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kAdd); |
@@ -141,8 +143,8 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index()); |
CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kLdaNamedProperty, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaNamedProperty); |
@@ -151,8 +153,8 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_1.index()); |
CHECK_EQ(iterator.GetIndexOperand(1), name_index); |
CHECK_EQ(iterator.GetIndexOperand(2), feedback_slot); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar); |
@@ -160,8 +162,8 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_1.index()); |
CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kAdd, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kAdd); |
@@ -169,16 +171,16 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index()); |
CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kLdar, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdar); |
CHECK_EQ(iterator.current_offset(), offset); |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index()); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar); |
@@ -186,16 +188,16 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_1.index()); |
CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kStackCheck, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kStackCheck); |
CHECK_EQ(iterator.current_offset(), offset); |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
CHECK_EQ(Bytecodes::NumberOfOperands(iterator.current_bytecode()), 0); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kLdaSmi, OperandScale::kQuadruple) + |
kPrefixByteSize; |
@@ -203,8 +205,8 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
CHECK_EQ(iterator.current_offset(), offset); |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kQuadruple); |
CHECK_EQ(Smi::FromInt(iterator.GetImmediateOperand(0)), smi_1); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar); |
@@ -212,24 +214,24 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index()); |
CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kStackCheck, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kStackCheck); |
CHECK_EQ(iterator.current_offset(), offset); |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
CHECK_EQ(Bytecodes::NumberOfOperands(iterator.current_bytecode()), 0); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kLdaSmi, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaSmi); |
CHECK_EQ(iterator.current_offset(), offset); |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
CHECK_EQ(Smi::FromInt(iterator.GetImmediateOperand(0)), smi_0); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar); |
@@ -237,15 +239,15 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index()); |
CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kLdaZero, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaZero); |
CHECK_EQ(iterator.current_offset(), offset); |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar); |
@@ -253,16 +255,16 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index()); |
CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kLdaConstant, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaConstant); |
CHECK_EQ(iterator.current_offset(), offset); |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
CHECK(iterator.GetConstantForIndexOperand(0).is_identical_to(heap_num_1)); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar); |
@@ -270,17 +272,17 @@ TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index()); |
CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
offset -= Bytecodes::Size(Bytecode::kLdaConstant, OperandScale::kSingle); |
CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaConstant); |
CHECK_EQ(iterator.current_offset(), offset); |
CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); |
CHECK(iterator.GetConstantForIndexOperand(0).is_identical_to(heap_num_0)); |
- CHECK(!iterator.done()); |
- iterator.Advance(); |
- CHECK(iterator.done()); |
+ CHECK(iterator.Valid()); |
+ --iterator; |
+ CHECK(!iterator.Valid()); |
} |
rmcilroy
2016/11/29 12:09:32
nit - could you add a random access iteration test
Leszek Swirski
2016/11/29 15:05:35
Done. I went a bit mad with tests here, the Ctrl,
|
} // namespace interpreter |