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

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

Issue 1413863010: [Interpreter] Add wide varients of bytecodes with feedback and constant pool indexes. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@int_fixbuiltinstacklimit
Patch Set: Rebased Created 5 years, 1 month 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
« no previous file with comments | « test/unittests/compiler/interpreter-assembler-unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 // Emit accumulator transfers. 42 // Emit accumulator transfers.
43 Register reg(0); 43 Register reg(0);
44 builder.LoadAccumulatorWithRegister(reg).StoreAccumulatorInRegister(reg); 44 builder.LoadAccumulatorWithRegister(reg).StoreAccumulatorInRegister(reg);
45 45
46 // Emit global load / store operations. 46 // Emit global load / store operations.
47 builder.LoadGlobal(0, 1, LanguageMode::SLOPPY) 47 builder.LoadGlobal(0, 1, LanguageMode::SLOPPY)
48 .LoadGlobal(0, 1, LanguageMode::STRICT) 48 .LoadGlobal(0, 1, LanguageMode::STRICT)
49 .StoreGlobal(0, 1, LanguageMode::SLOPPY) 49 .StoreGlobal(0, 1, LanguageMode::SLOPPY)
50 .StoreGlobal(0, 1, LanguageMode::STRICT); 50 .StoreGlobal(0, 1, LanguageMode::STRICT);
51 51
52 // Emit wide global load / store operations.
53 builder.LoadGlobal(0, 1024, LanguageMode::SLOPPY)
54 .LoadGlobal(1024, 1, LanguageMode::STRICT)
55 .StoreGlobal(0, 1024, LanguageMode::SLOPPY)
56 .StoreGlobal(1024, 1, LanguageMode::STRICT);
57
52 // Emit context operations. 58 // Emit context operations.
53 builder.PushContext(reg); 59 builder.PushContext(reg);
54 builder.PopContext(reg); 60 builder.PopContext(reg);
55 builder.LoadContextSlot(reg, 1); 61 builder.LoadContextSlot(reg, 1);
56 builder.StoreContextSlot(reg, 1); 62 builder.StoreContextSlot(reg, 1);
57 63
58 // Emit load / store property operations. 64 // Emit load / store property operations.
59 builder.LoadNamedProperty(reg, 0, 0, LanguageMode::SLOPPY) 65 builder.LoadNamedProperty(reg, 0, 0, LanguageMode::SLOPPY)
60 .LoadKeyedProperty(reg, 0, LanguageMode::SLOPPY) 66 .LoadKeyedProperty(reg, 0, LanguageMode::SLOPPY)
61 .StoreNamedProperty(reg, 0, 0, LanguageMode::SLOPPY) 67 .StoreNamedProperty(reg, 0, 0, LanguageMode::SLOPPY)
62 .StoreKeyedProperty(reg, reg, 0, LanguageMode::SLOPPY) 68 .StoreKeyedProperty(reg, reg, 0, LanguageMode::SLOPPY)
63 .LoadNamedProperty(reg, 0, 0, LanguageMode::STRICT) 69 .LoadNamedProperty(reg, 0, 0, LanguageMode::STRICT)
64 .LoadKeyedProperty(reg, 0, LanguageMode::STRICT) 70 .LoadKeyedProperty(reg, 0, LanguageMode::STRICT)
65 .StoreNamedProperty(reg, 0, 0, LanguageMode::STRICT) 71 .StoreNamedProperty(reg, 0, 0, LanguageMode::STRICT)
66 .StoreKeyedProperty(reg, reg, 0, LanguageMode::STRICT); 72 .StoreKeyedProperty(reg, reg, 0, LanguageMode::STRICT);
67 73
74 // Emit wide load / store property operations.
75 builder.LoadNamedProperty(reg, 2056, 0, LanguageMode::SLOPPY)
76 .LoadKeyedProperty(reg, 2056, LanguageMode::SLOPPY)
77 .StoreNamedProperty(reg, 0, 2056, LanguageMode::SLOPPY)
78 .StoreKeyedProperty(reg, reg, 2056, LanguageMode::SLOPPY)
79 .LoadNamedProperty(reg, 2056, 0, LanguageMode::STRICT)
80 .LoadKeyedProperty(reg, 2056, LanguageMode::STRICT)
81 .StoreNamedProperty(reg, 0, 2056, LanguageMode::STRICT)
82 .StoreKeyedProperty(reg, reg, 2056, LanguageMode::STRICT);
83
68 // Emit closure operations. 84 // Emit closure operations.
69 builder.CreateClosure(NOT_TENURED); 85 builder.CreateClosure(NOT_TENURED);
70 86
71 // Emit argument creation operations. 87 // Emit argument creation operations.
72 builder.CreateArguments(CreateArgumentsType::kMappedArguments) 88 builder.CreateArguments(CreateArgumentsType::kMappedArguments)
73 .CreateArguments(CreateArgumentsType::kUnmappedArguments); 89 .CreateArguments(CreateArgumentsType::kUnmappedArguments);
74 90
75 // Emit literal creation operations 91 // Emit literal creation operations
76 builder.CreateRegExpLiteral(0, reg) 92 builder.CreateRegExpLiteral(0, reg)
77 .CreateArrayLiteral(0, 0) 93 .CreateArrayLiteral(0, 0)
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 .JumpIfToBooleanFalse(&start) 169 .JumpIfToBooleanFalse(&start)
154 .JumpIfNull(&start) 170 .JumpIfNull(&start)
155 .JumpIfUndefined(&start); 171 .JumpIfUndefined(&start);
156 172
157 builder.EnterBlock() 173 builder.EnterBlock()
158 .Throw() 174 .Throw()
159 .LeaveBlock(); 175 .LeaveBlock();
160 176
161 builder.ForInPrepare(reg).ForInDone(reg).ForInNext(reg, reg); 177 builder.ForInPrepare(reg).ForInDone(reg).ForInNext(reg, reg);
162 178
179 // Wide constant pool loads
180 for (int i = 0; i < 256; i++) {
181 // Emit junk in constant pool to force wide constant pool index.
182 builder.GetConstantPoolEntry(handle(Smi::FromInt(i), isolate()));
183 }
184 builder.LoadLiteral(Smi::FromInt(20000000));
185
163 builder.Return(); 186 builder.Return();
164 187
165 // Generate BytecodeArray. 188 // Generate BytecodeArray.
166 Handle<BytecodeArray> the_array = builder.ToBytecodeArray(); 189 Handle<BytecodeArray> the_array = builder.ToBytecodeArray();
167 CHECK_EQ(the_array->frame_size(), 190 CHECK_EQ(the_array->frame_size(),
168 builder.fixed_register_count() * kPointerSize); 191 builder.fixed_register_count() * kPointerSize);
169 192
170 // Build scorecard of bytecodes encountered in the BytecodeArray. 193 // Build scorecard of bytecodes encountered in the BytecodeArray.
171 std::vector<int> scorecard(Bytecodes::ToByte(Bytecode::kLast) + 1); 194 std::vector<int> scorecard(Bytecodes::ToByte(Bytecode::kLast) + 1);
172 Bytecode final_bytecode = Bytecode::kLdaZero; 195 Bytecode final_bytecode = Bytecode::kLdaZero;
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 570
548 CHECK_EQ(iterator.current_bytecode(), Bytecode::kReturn); 571 CHECK_EQ(iterator.current_bytecode(), Bytecode::kReturn);
549 iterator.Advance(); 572 iterator.Advance();
550 CHECK(iterator.done()); 573 CHECK(iterator.done());
551 } 574 }
552 575
553 576
554 } // namespace interpreter 577 } // namespace interpreter
555 } // namespace internal 578 } // namespace internal
556 } // namespace v8 579 } // namespace v8
OLDNEW
« no previous file with comments | « test/unittests/compiler/interpreter-assembler-unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698