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

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

Issue 1392933002: [Interpreter] Reduce temporary register usage in generated bytecode. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Missed comments. Created 5 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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-iterator.h" 8 #include "src/interpreter/bytecode-array-iterator.h"
9 #include "test/unittests/test-utils.h" 9 #include "test/unittests/test-utils.h"
10 10
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 166
167 167
168 TEST_F(BytecodeArrayBuilderTest, FrameSizesLookGood) { 168 TEST_F(BytecodeArrayBuilderTest, FrameSizesLookGood) {
169 for (int locals = 0; locals < 5; locals++) { 169 for (int locals = 0; locals < 5; locals++) {
170 for (int contexts = 0; contexts < 4; contexts++) { 170 for (int contexts = 0; contexts < 4; contexts++) {
171 for (int temps = 0; temps < 3; temps++) { 171 for (int temps = 0; temps < 3; temps++) {
172 BytecodeArrayBuilder builder(isolate(), zone()); 172 BytecodeArrayBuilder builder(isolate(), zone());
173 builder.set_parameter_count(0); 173 builder.set_parameter_count(0);
174 builder.set_locals_count(locals); 174 builder.set_locals_count(locals);
175 builder.set_context_count(contexts); 175 builder.set_context_count(contexts);
176 builder.Return();
177 176
178 TemporaryRegisterScope temporaries(&builder); 177 TemporaryRegisterScope temporaries(&builder);
179 for (int i = 0; i < temps; i++) { 178 for (int i = 0; i < temps; i++) {
180 temporaries.NewRegister(); 179 builder.StoreAccumulatorInRegister(temporaries.NewRegister());
181 } 180 }
181 builder.Return();
182 182
183 Handle<BytecodeArray> the_array = builder.ToBytecodeArray(); 183 Handle<BytecodeArray> the_array = builder.ToBytecodeArray();
184 int total_registers = locals + contexts + temps; 184 int total_registers = locals + contexts + temps;
185 CHECK_EQ(the_array->frame_size(), total_registers * kPointerSize); 185 CHECK_EQ(the_array->frame_size(), total_registers * kPointerSize);
186 } 186 }
187 } 187 }
188 } 188 }
189 } 189 }
190 190
191 191
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 builder.set_parameter_count(10); 235 builder.set_parameter_count(10);
236 builder.set_locals_count(0); 236 builder.set_locals_count(0);
237 builder.set_context_count(0); 237 builder.set_context_count(0);
238 238
239 Register param0(builder.Parameter(0)); 239 Register param0(builder.Parameter(0));
240 Register param9(builder.Parameter(9)); 240 Register param9(builder.Parameter(9));
241 CHECK_EQ(param9.index() - param0.index(), 9); 241 CHECK_EQ(param9.index() - param0.index(), 9);
242 } 242 }
243 243
244 244
245 TEST_F(BytecodeArrayBuilderTest, RegisterType) {
246 BytecodeArrayBuilder builder(isolate(), zone());
247 builder.set_parameter_count(10);
248 builder.set_locals_count(3);
249 builder.set_context_count(0);
250
251 TemporaryRegisterScope temporary_register_scope(&builder);
252 Register temp0 = temporary_register_scope.NewRegister();
253 Register param0(builder.Parameter(0));
254 Register param9(builder.Parameter(9));
255 Register temp1 = temporary_register_scope.NewRegister();
256 Register reg0(0);
257 Register reg1(1);
258 Register reg2(2);
259 Register temp2 = temporary_register_scope.NewRegister();
260 CHECK_EQ(builder.RegisterIsParameterOrLocal(temp0), false);
261 CHECK_EQ(builder.RegisterIsParameterOrLocal(temp1), false);
262 CHECK_EQ(builder.RegisterIsParameterOrLocal(temp2), false);
263 CHECK_EQ(builder.RegisterIsParameterOrLocal(param0), true);
264 CHECK_EQ(builder.RegisterIsParameterOrLocal(param9), true);
265 CHECK_EQ(builder.RegisterIsParameterOrLocal(reg0), true);
266 CHECK_EQ(builder.RegisterIsParameterOrLocal(reg1), true);
267 CHECK_EQ(builder.RegisterIsParameterOrLocal(reg2), true);
268 }
269
270
245 TEST_F(BytecodeArrayBuilderTest, Constants) { 271 TEST_F(BytecodeArrayBuilderTest, Constants) {
246 BytecodeArrayBuilder builder(isolate(), zone()); 272 BytecodeArrayBuilder builder(isolate(), zone());
247 builder.set_parameter_count(0); 273 builder.set_parameter_count(0);
248 builder.set_locals_count(0); 274 builder.set_locals_count(0);
249 builder.set_context_count(0); 275 builder.set_context_count(0);
250 276
251 Factory* factory = isolate()->factory(); 277 Factory* factory = isolate()->factory();
252 Handle<HeapObject> heap_num_1 = factory->NewHeapNumber(3.14); 278 Handle<HeapObject> heap_num_1 = factory->NewHeapNumber(3.14);
253 Handle<HeapObject> heap_num_2 = factory->NewHeapNumber(5.2); 279 Handle<HeapObject> heap_num_2 = factory->NewHeapNumber(5.2);
254 Handle<Object> large_smi(Smi::FromInt(0x12345678), isolate()); 280 Handle<Object> large_smi(Smi::FromInt(0x12345678), isolate());
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 522
497 CHECK_EQ(iterator.current_bytecode(), Bytecode::kReturn); 523 CHECK_EQ(iterator.current_bytecode(), Bytecode::kReturn);
498 iterator.Advance(); 524 iterator.Advance();
499 CHECK(iterator.done()); 525 CHECK(iterator.done());
500 } 526 }
501 527
502 528
503 } // namespace interpreter 529 } // namespace interpreter
504 } // namespace internal 530 } // namespace internal
505 } // namespace v8 531 } // namespace v8
OLDNEW
« src/interpreter/bytecode-generator.cc ('K') | « test/cctest/interpreter/test-bytecode-generator.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698