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

Side by Side Diff: test/unittests/interpreter/bytecode-array-random-iterator-unittest.cc

Issue 2536653003: [ignition] Rewrite reverse iterator as random iterator (Closed)
Patch Set: Created 4 years 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/interpreter/bytecode-array-builder.h" 7 #include "src/interpreter/bytecode-array-builder.h"
8 #include "src/interpreter/bytecode-array-reverse-iterator.h" 8 #include "src/interpreter/bytecode-array-random-iterator.h"
9 #include "test/unittests/test-utils.h" 9 #include "test/unittests/test-utils.h"
10 10
11 namespace v8 { 11 namespace v8 {
12 namespace internal { 12 namespace internal {
13 namespace interpreter { 13 namespace interpreter {
14 14
15 class BytecodeArrayReverseIteratorTest : public TestWithIsolateAndZone { 15 class BytecodeArrayRandomIteratorTest : public TestWithIsolateAndZone {
16 public: 16 public:
17 BytecodeArrayReverseIteratorTest() {} 17 BytecodeArrayRandomIteratorTest() {}
18 ~BytecodeArrayReverseIteratorTest() override {} 18 ~BytecodeArrayRandomIteratorTest() override {}
19 }; 19 };
20 20
21 TEST_F(BytecodeArrayReverseIteratorTest, IteratesBytecodeArray) { 21 TEST_F(BytecodeArrayRandomIteratorTest, IteratesBytecodeArrayBackwards) {
22 // Use a builder to create an array with containing multiple bytecodes 22 // Use a builder to create an array with containing multiple bytecodes
23 // with 0, 1 and 2 operands. 23 // with 0, 1 and 2 operands.
24 BytecodeArrayBuilder builder(isolate(), zone(), 3, 3, 0); 24 BytecodeArrayBuilder builder(isolate(), zone(), 3, 3, 0);
25 Factory* factory = isolate()->factory(); 25 Factory* factory = isolate()->factory();
26 Handle<HeapObject> heap_num_0 = factory->NewHeapNumber(2.718); 26 Handle<HeapObject> heap_num_0 = factory->NewHeapNumber(2.718);
27 Handle<HeapObject> heap_num_1 = factory->NewHeapNumber(2147483647); 27 Handle<HeapObject> heap_num_1 = factory->NewHeapNumber(2147483647);
28 Smi* zero = Smi::kZero; 28 Smi* zero = Smi::kZero;
29 Smi* smi_0 = Smi::FromInt(64); 29 Smi* smi_0 = Smi::FromInt(64);
30 Smi* smi_1 = Smi::FromInt(-65536); 30 Smi* smi_1 = Smi::FromInt(-65536);
31 Register reg_0(0); 31 Register reg_0(0);
(...skipping 25 matching lines...) Expand all
57 .StoreAccumulatorInRegister(param) 57 .StoreAccumulatorInRegister(param)
58 .CallRuntimeForPair(Runtime::kLoadLookupSlotForCall, param, pair) 58 .CallRuntimeForPair(Runtime::kLoadLookupSlotForCall, param, pair)
59 .ForInPrepare(reg_0, triple) 59 .ForInPrepare(reg_0, triple)
60 .CallRuntime(Runtime::kLoadIC_Miss, reg_0) 60 .CallRuntime(Runtime::kLoadIC_Miss, reg_0)
61 .Debugger() 61 .Debugger()
62 .LoadGlobal(name, 0x10000000, TypeofMode::NOT_INSIDE_TYPEOF) 62 .LoadGlobal(name, 0x10000000, TypeofMode::NOT_INSIDE_TYPEOF)
63 .Return(); 63 .Return();
64 64
65 // Test iterator sees the expected output from the builder. 65 // Test iterator sees the expected output from the builder.
66 Handle<BytecodeArray> bytecodeArray = builder.ToBytecodeArray(isolate()); 66 Handle<BytecodeArray> bytecodeArray = builder.ToBytecodeArray(isolate());
67 BytecodeArrayReverseIterator iterator(bytecodeArray, zone()); 67 BytecodeArrayRandomIterator iterator(bytecodeArray, zone());
68 const int kPrefixByteSize = 1; 68 const int kPrefixByteSize = 1;
69 int offset = bytecodeArray->length(); 69 int offset = bytecodeArray->length();
70 70
71 iterator.GoToEnd();
72
71 offset -= Bytecodes::Size(Bytecode::kReturn, OperandScale::kSingle); 73 offset -= Bytecodes::Size(Bytecode::kReturn, OperandScale::kSingle);
72 CHECK_EQ(iterator.current_bytecode(), Bytecode::kReturn); 74 CHECK_EQ(iterator.current_bytecode(), Bytecode::kReturn);
73 CHECK_EQ(iterator.current_offset(), offset); 75 CHECK_EQ(iterator.current_offset(), offset);
74 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 76 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
75 CHECK(!iterator.done()); 77 CHECK(iterator.Valid());
76 iterator.Advance(); 78 --iterator;
77 79
78 offset -= Bytecodes::Size(Bytecode::kLdaGlobal, OperandScale::kQuadruple) + 80 offset -= Bytecodes::Size(Bytecode::kLdaGlobal, OperandScale::kQuadruple) +
79 kPrefixByteSize; 81 kPrefixByteSize;
80 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaGlobal); 82 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaGlobal);
81 CHECK_EQ(iterator.current_offset(), offset); 83 CHECK_EQ(iterator.current_offset(), offset);
82 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kQuadruple); 84 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kQuadruple);
83 CHECK_EQ(iterator.current_bytecode_size(), 10); 85 CHECK_EQ(iterator.current_bytecode_size(), 10);
84 CHECK_EQ(iterator.GetIndexOperand(1), 0x10000000u); 86 CHECK_EQ(iterator.GetIndexOperand(1), 0x10000000u);
85 iterator.Advance(); 87 --iterator;
86 88
87 offset -= Bytecodes::Size(Bytecode::kDebugger, OperandScale::kSingle); 89 offset -= Bytecodes::Size(Bytecode::kDebugger, OperandScale::kSingle);
88 CHECK_EQ(iterator.current_bytecode(), Bytecode::kDebugger); 90 CHECK_EQ(iterator.current_bytecode(), Bytecode::kDebugger);
89 CHECK_EQ(iterator.current_offset(), offset); 91 CHECK_EQ(iterator.current_offset(), offset);
90 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 92 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
91 CHECK(!iterator.done()); 93 CHECK(iterator.Valid());
92 iterator.Advance(); 94 --iterator;
93 95
94 offset -= Bytecodes::Size(Bytecode::kCallRuntime, OperandScale::kSingle); 96 offset -= Bytecodes::Size(Bytecode::kCallRuntime, OperandScale::kSingle);
95 CHECK_EQ(iterator.current_bytecode(), Bytecode::kCallRuntime); 97 CHECK_EQ(iterator.current_bytecode(), Bytecode::kCallRuntime);
96 CHECK_EQ(iterator.current_offset(), offset); 98 CHECK_EQ(iterator.current_offset(), offset);
97 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 99 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
98 CHECK_EQ(iterator.GetRuntimeIdOperand(0), Runtime::kLoadIC_Miss); 100 CHECK_EQ(iterator.GetRuntimeIdOperand(0), Runtime::kLoadIC_Miss);
99 CHECK_EQ(iterator.GetRegisterOperand(1).index(), reg_0.index()); 101 CHECK_EQ(iterator.GetRegisterOperand(1).index(), reg_0.index());
100 CHECK_EQ(iterator.GetRegisterCountOperand(2), 1u); 102 CHECK_EQ(iterator.GetRegisterCountOperand(2), 1u);
101 CHECK(!iterator.done()); 103 CHECK(iterator.Valid());
102 iterator.Advance(); 104 --iterator;
103 105
104 offset -= Bytecodes::Size(Bytecode::kForInPrepare, OperandScale::kSingle); 106 offset -= Bytecodes::Size(Bytecode::kForInPrepare, OperandScale::kSingle);
105 CHECK_EQ(iterator.current_bytecode(), Bytecode::kForInPrepare); 107 CHECK_EQ(iterator.current_bytecode(), Bytecode::kForInPrepare);
106 CHECK_EQ(iterator.current_offset(), offset); 108 CHECK_EQ(iterator.current_offset(), offset);
107 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 109 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
108 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index()); 110 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index());
109 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); 111 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1);
110 CHECK_EQ(iterator.GetRegisterOperand(1).index(), reg_0.index()); 112 CHECK_EQ(iterator.GetRegisterOperand(1).index(), reg_0.index());
111 CHECK_EQ(iterator.GetRegisterOperandRange(1), 3); 113 CHECK_EQ(iterator.GetRegisterOperandRange(1), 3);
112 CHECK(!iterator.done()); 114 CHECK(iterator.Valid());
113 iterator.Advance(); 115 --iterator;
114 116
115 offset -= 117 offset -=
116 Bytecodes::Size(Bytecode::kCallRuntimeForPair, OperandScale::kSingle); 118 Bytecodes::Size(Bytecode::kCallRuntimeForPair, OperandScale::kSingle);
117 CHECK_EQ(iterator.current_bytecode(), Bytecode::kCallRuntimeForPair); 119 CHECK_EQ(iterator.current_bytecode(), Bytecode::kCallRuntimeForPair);
118 CHECK_EQ(iterator.current_offset(), offset); 120 CHECK_EQ(iterator.current_offset(), offset);
119 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 121 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
120 CHECK_EQ(iterator.GetRuntimeIdOperand(0), Runtime::kLoadLookupSlotForCall); 122 CHECK_EQ(iterator.GetRuntimeIdOperand(0), Runtime::kLoadLookupSlotForCall);
121 CHECK_EQ(iterator.GetRegisterOperand(1).index(), param.index()); 123 CHECK_EQ(iterator.GetRegisterOperand(1).index(), param.index());
122 CHECK_EQ(iterator.GetRegisterOperandRange(1), 1); 124 CHECK_EQ(iterator.GetRegisterOperandRange(1), 1);
123 CHECK_EQ(iterator.GetRegisterCountOperand(2), 1u); 125 CHECK_EQ(iterator.GetRegisterCountOperand(2), 1u);
124 CHECK_EQ(iterator.GetRegisterOperand(3).index(), reg_0.index()); 126 CHECK_EQ(iterator.GetRegisterOperand(3).index(), reg_0.index());
125 CHECK_EQ(iterator.GetRegisterOperandRange(3), 2); 127 CHECK_EQ(iterator.GetRegisterOperandRange(3), 2);
126 CHECK(!iterator.done()); 128 CHECK(iterator.Valid());
127 iterator.Advance(); 129 --iterator;
128 130
129 offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle); 131 offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle);
130 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar); 132 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar);
131 CHECK_EQ(iterator.current_offset(), offset); 133 CHECK_EQ(iterator.current_offset(), offset);
132 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 134 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
133 CHECK_EQ(iterator.GetRegisterOperand(0).index(), param.index()); 135 CHECK_EQ(iterator.GetRegisterOperand(0).index(), param.index());
134 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); 136 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1);
135 CHECK(!iterator.done()); 137 CHECK(iterator.Valid());
136 iterator.Advance(); 138 --iterator;
137 139
138 offset -= Bytecodes::Size(Bytecode::kAdd, OperandScale::kSingle); 140 offset -= Bytecodes::Size(Bytecode::kAdd, OperandScale::kSingle);
139 CHECK_EQ(iterator.current_bytecode(), Bytecode::kAdd); 141 CHECK_EQ(iterator.current_bytecode(), Bytecode::kAdd);
140 CHECK_EQ(iterator.current_offset(), offset); 142 CHECK_EQ(iterator.current_offset(), offset);
141 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 143 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
142 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index()); 144 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index());
143 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); 145 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1);
144 CHECK(!iterator.done()); 146 CHECK(iterator.Valid());
145 iterator.Advance(); 147 --iterator;
146 148
147 offset -= Bytecodes::Size(Bytecode::kLdaNamedProperty, OperandScale::kSingle); 149 offset -= Bytecodes::Size(Bytecode::kLdaNamedProperty, OperandScale::kSingle);
148 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaNamedProperty); 150 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaNamedProperty);
149 CHECK_EQ(iterator.current_offset(), offset); 151 CHECK_EQ(iterator.current_offset(), offset);
150 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 152 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
151 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_1.index()); 153 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_1.index());
152 CHECK_EQ(iterator.GetIndexOperand(1), name_index); 154 CHECK_EQ(iterator.GetIndexOperand(1), name_index);
153 CHECK_EQ(iterator.GetIndexOperand(2), feedback_slot); 155 CHECK_EQ(iterator.GetIndexOperand(2), feedback_slot);
154 CHECK(!iterator.done()); 156 CHECK(iterator.Valid());
155 iterator.Advance(); 157 --iterator;
156 158
157 offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle); 159 offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle);
158 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar); 160 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar);
159 CHECK_EQ(iterator.current_offset(), offset); 161 CHECK_EQ(iterator.current_offset(), offset);
160 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 162 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
161 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_1.index()); 163 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_1.index());
162 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); 164 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1);
163 CHECK(!iterator.done()); 165 CHECK(iterator.Valid());
164 iterator.Advance(); 166 --iterator;
165 167
166 offset -= Bytecodes::Size(Bytecode::kAdd, OperandScale::kSingle); 168 offset -= Bytecodes::Size(Bytecode::kAdd, OperandScale::kSingle);
167 CHECK_EQ(iterator.current_bytecode(), Bytecode::kAdd); 169 CHECK_EQ(iterator.current_bytecode(), Bytecode::kAdd);
168 CHECK_EQ(iterator.current_offset(), offset); 170 CHECK_EQ(iterator.current_offset(), offset);
169 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 171 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
170 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index()); 172 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index());
171 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); 173 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1);
172 CHECK(!iterator.done()); 174 CHECK(iterator.Valid());
173 iterator.Advance(); 175 --iterator;
174 176
175 offset -= Bytecodes::Size(Bytecode::kLdar, OperandScale::kSingle); 177 offset -= Bytecodes::Size(Bytecode::kLdar, OperandScale::kSingle);
176 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdar); 178 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdar);
177 CHECK_EQ(iterator.current_offset(), offset); 179 CHECK_EQ(iterator.current_offset(), offset);
178 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 180 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
179 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index()); 181 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index());
180 CHECK(!iterator.done()); 182 CHECK(iterator.Valid());
181 iterator.Advance(); 183 --iterator;
182 184
183 offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle); 185 offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle);
184 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar); 186 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar);
185 CHECK_EQ(iterator.current_offset(), offset); 187 CHECK_EQ(iterator.current_offset(), offset);
186 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 188 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
187 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_1.index()); 189 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_1.index());
188 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); 190 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1);
189 CHECK(!iterator.done()); 191 CHECK(iterator.Valid());
190 iterator.Advance(); 192 --iterator;
191 193
192 offset -= Bytecodes::Size(Bytecode::kStackCheck, OperandScale::kSingle); 194 offset -= Bytecodes::Size(Bytecode::kStackCheck, OperandScale::kSingle);
193 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStackCheck); 195 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStackCheck);
194 CHECK_EQ(iterator.current_offset(), offset); 196 CHECK_EQ(iterator.current_offset(), offset);
195 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 197 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
196 CHECK_EQ(Bytecodes::NumberOfOperands(iterator.current_bytecode()), 0); 198 CHECK_EQ(Bytecodes::NumberOfOperands(iterator.current_bytecode()), 0);
197 CHECK(!iterator.done()); 199 CHECK(iterator.Valid());
198 iterator.Advance(); 200 --iterator;
199 201
200 offset -= Bytecodes::Size(Bytecode::kLdaSmi, OperandScale::kQuadruple) + 202 offset -= Bytecodes::Size(Bytecode::kLdaSmi, OperandScale::kQuadruple) +
201 kPrefixByteSize; 203 kPrefixByteSize;
202 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaSmi); 204 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaSmi);
203 CHECK_EQ(iterator.current_offset(), offset); 205 CHECK_EQ(iterator.current_offset(), offset);
204 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kQuadruple); 206 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kQuadruple);
205 CHECK_EQ(Smi::FromInt(iterator.GetImmediateOperand(0)), smi_1); 207 CHECK_EQ(Smi::FromInt(iterator.GetImmediateOperand(0)), smi_1);
206 CHECK(!iterator.done()); 208 CHECK(iterator.Valid());
207 iterator.Advance(); 209 --iterator;
208 210
209 offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle); 211 offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle);
210 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar); 212 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar);
211 CHECK_EQ(iterator.current_offset(), offset); 213 CHECK_EQ(iterator.current_offset(), offset);
212 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 214 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
213 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index()); 215 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index());
214 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); 216 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1);
215 CHECK(!iterator.done()); 217 CHECK(iterator.Valid());
216 iterator.Advance(); 218 --iterator;
217 219
218 offset -= Bytecodes::Size(Bytecode::kStackCheck, OperandScale::kSingle); 220 offset -= Bytecodes::Size(Bytecode::kStackCheck, OperandScale::kSingle);
219 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStackCheck); 221 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStackCheck);
220 CHECK_EQ(iterator.current_offset(), offset); 222 CHECK_EQ(iterator.current_offset(), offset);
221 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 223 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
222 CHECK_EQ(Bytecodes::NumberOfOperands(iterator.current_bytecode()), 0); 224 CHECK_EQ(Bytecodes::NumberOfOperands(iterator.current_bytecode()), 0);
223 CHECK(!iterator.done()); 225 CHECK(iterator.Valid());
224 iterator.Advance(); 226 --iterator;
225 227
226 offset -= Bytecodes::Size(Bytecode::kLdaSmi, OperandScale::kSingle); 228 offset -= Bytecodes::Size(Bytecode::kLdaSmi, OperandScale::kSingle);
227 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaSmi); 229 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaSmi);
228 CHECK_EQ(iterator.current_offset(), offset); 230 CHECK_EQ(iterator.current_offset(), offset);
229 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 231 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
230 CHECK_EQ(Smi::FromInt(iterator.GetImmediateOperand(0)), smi_0); 232 CHECK_EQ(Smi::FromInt(iterator.GetImmediateOperand(0)), smi_0);
231 CHECK(!iterator.done()); 233 CHECK(iterator.Valid());
232 iterator.Advance(); 234 --iterator;
233 235
234 offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle); 236 offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle);
235 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar); 237 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar);
236 CHECK_EQ(iterator.current_offset(), offset); 238 CHECK_EQ(iterator.current_offset(), offset);
237 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 239 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
238 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index()); 240 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index());
239 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); 241 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1);
240 CHECK(!iterator.done()); 242 CHECK(iterator.Valid());
241 iterator.Advance(); 243 --iterator;
242 244
243 offset -= Bytecodes::Size(Bytecode::kLdaZero, OperandScale::kSingle); 245 offset -= Bytecodes::Size(Bytecode::kLdaZero, OperandScale::kSingle);
244 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaZero); 246 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaZero);
245 CHECK_EQ(iterator.current_offset(), offset); 247 CHECK_EQ(iterator.current_offset(), offset);
246 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 248 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
247 CHECK(!iterator.done()); 249 CHECK(iterator.Valid());
248 iterator.Advance(); 250 --iterator;
249 251
250 offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle); 252 offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle);
251 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar); 253 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar);
252 CHECK_EQ(iterator.current_offset(), offset); 254 CHECK_EQ(iterator.current_offset(), offset);
253 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 255 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
254 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index()); 256 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index());
255 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); 257 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1);
256 CHECK(!iterator.done()); 258 CHECK(iterator.Valid());
257 iterator.Advance(); 259 --iterator;
258 260
259 offset -= Bytecodes::Size(Bytecode::kLdaConstant, OperandScale::kSingle); 261 offset -= Bytecodes::Size(Bytecode::kLdaConstant, OperandScale::kSingle);
260 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaConstant); 262 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaConstant);
261 CHECK_EQ(iterator.current_offset(), offset); 263 CHECK_EQ(iterator.current_offset(), offset);
262 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 264 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
263 CHECK(iterator.GetConstantForIndexOperand(0).is_identical_to(heap_num_1)); 265 CHECK(iterator.GetConstantForIndexOperand(0).is_identical_to(heap_num_1));
264 CHECK(!iterator.done()); 266 CHECK(iterator.Valid());
265 iterator.Advance(); 267 --iterator;
266 268
267 offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle); 269 offset -= Bytecodes::Size(Bytecode::kStar, OperandScale::kSingle);
268 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar); 270 CHECK_EQ(iterator.current_bytecode(), Bytecode::kStar);
269 CHECK_EQ(iterator.current_offset(), offset); 271 CHECK_EQ(iterator.current_offset(), offset);
270 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 272 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
271 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index()); 273 CHECK_EQ(iterator.GetRegisterOperand(0).index(), reg_0.index());
272 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1); 274 CHECK_EQ(iterator.GetRegisterOperandRange(0), 1);
273 CHECK(!iterator.done()); 275 CHECK(iterator.Valid());
274 iterator.Advance(); 276 --iterator;
275 277
276 offset -= Bytecodes::Size(Bytecode::kLdaConstant, OperandScale::kSingle); 278 offset -= Bytecodes::Size(Bytecode::kLdaConstant, OperandScale::kSingle);
277 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaConstant); 279 CHECK_EQ(iterator.current_bytecode(), Bytecode::kLdaConstant);
278 CHECK_EQ(iterator.current_offset(), offset); 280 CHECK_EQ(iterator.current_offset(), offset);
279 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle); 281 CHECK_EQ(iterator.current_operand_scale(), OperandScale::kSingle);
280 CHECK(iterator.GetConstantForIndexOperand(0).is_identical_to(heap_num_0)); 282 CHECK(iterator.GetConstantForIndexOperand(0).is_identical_to(heap_num_0));
281 CHECK(!iterator.done()); 283 CHECK(iterator.Valid());
282 iterator.Advance(); 284 --iterator;
283 CHECK(iterator.done()); 285 CHECK(!iterator.Valid());
284 } 286 }
285 287
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,
286 } // namespace interpreter 288 } // namespace interpreter
287 } // namespace internal 289 } // namespace internal
288 } // namespace v8 290 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698