OLD | NEW |
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/compiler.h" | 7 #include "src/compiler.h" |
8 #include "src/interpreter/bytecode-array-iterator.h" | 8 #include "src/interpreter/bytecode-array-iterator.h" |
9 #include "src/interpreter/bytecode-generator.h" | 9 #include "src/interpreter/bytecode-generator.h" |
10 #include "src/interpreter/interpreter.h" | 10 #include "src/interpreter/interpreter.h" |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 {"var x = 0; return x;", | 213 {"var x = 0; return x;", |
214 kPointerSize, | 214 kPointerSize, |
215 1, | 215 1, |
216 6, | 216 6, |
217 { | 217 { |
218 B(LdaZero), // | 218 B(LdaZero), // |
219 B(Star), R(0), // | 219 B(Star), R(0), // |
220 B(Ldar), R(0), // | 220 B(Ldar), R(0), // |
221 B(Return) // | 221 B(Return) // |
222 }, | 222 }, |
223 0 | 223 0}, |
224 }, | |
225 {"var x = 0; return x + 3;", | 224 {"var x = 0; return x + 3;", |
226 2 * kPointerSize, | 225 2 * kPointerSize, |
227 1, | 226 1, |
228 12, | 227 12, |
229 { | 228 { |
230 B(LdaZero), // | 229 B(LdaZero), // |
231 B(Star), R(0), // | 230 B(Star), R(0), // |
232 B(Ldar), R(0), // Easy to spot r1 not really needed here. | 231 B(Ldar), R(0), // Easy to spot r1 not really needed here. |
233 B(Star), R(1), // Dead store. | 232 B(Star), R(1), // Dead store. |
234 B(LdaSmi8), U8(3), // | 233 B(LdaSmi8), U8(3), // |
235 B(Add), R(1), // | 234 B(Add), R(1), // |
236 B(Return) // | 235 B(Return) // |
237 }, | 236 }, |
238 0 | 237 0}, |
239 }}; | 238 {"var x = 10; return x << 3;", |
| 239 2 * kPointerSize, |
| 240 1, |
| 241 13, |
| 242 { |
| 243 B(LdaSmi8), U8(10), // |
| 244 B(Star), R(0), // |
| 245 B(Ldar), R(0), // Easy to spot r1 not really needed here. |
| 246 B(Star), R(1), // Dead store. |
| 247 B(LdaSmi8), U8(3), // |
| 248 B(ShiftLeft), R(1), // |
| 249 B(Return) // |
| 250 }, |
| 251 0}, |
| 252 {"var x = 10; return x >> 3;", |
| 253 2 * kPointerSize, |
| 254 1, |
| 255 13, |
| 256 { |
| 257 B(LdaSmi8), U8(10), // |
| 258 B(Star), R(0), // |
| 259 B(Ldar), R(0), // Easy to spot r1 not really needed here. |
| 260 B(Star), R(1), // Dead store. |
| 261 B(LdaSmi8), U8(3), // |
| 262 B(ShiftRight), R(1), // |
| 263 B(Return) // |
| 264 }, |
| 265 0}, |
| 266 {"var x = 10; return x >>> 3;", |
| 267 2 * kPointerSize, |
| 268 1, |
| 269 13, |
| 270 { |
| 271 B(LdaSmi8), U8(10), // |
| 272 B(Star), R(0), // |
| 273 B(Ldar), R(0), // Easy to spot r1 not really needed here. |
| 274 B(Star), R(1), // Dead store. |
| 275 B(LdaSmi8), U8(3), // |
| 276 B(ShiftRightLogical), R(1), // |
| 277 B(Return) // |
| 278 }, |
| 279 0}}; |
240 | 280 |
241 for (size_t i = 0; i < arraysize(snippets); i++) { | 281 for (size_t i = 0; i < arraysize(snippets); i++) { |
242 Handle<BytecodeArray> bytecode_array = | 282 Handle<BytecodeArray> bytecode_array = |
243 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); | 283 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); |
244 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 284 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
245 } | 285 } |
246 } | 286 } |
247 | 287 |
248 | 288 |
249 TEST(Parameters) { | 289 TEST(Parameters) { |
(...skipping 1197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1447 Handle<BytecodeArray> bytecode_array = | 1487 Handle<BytecodeArray> bytecode_array = |
1448 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); | 1488 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); |
1449 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 1489 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
1450 } | 1490 } |
1451 } | 1491 } |
1452 | 1492 |
1453 | 1493 |
1454 } // namespace interpreter | 1494 } // namespace interpreter |
1455 } // namespace internal | 1495 } // namespace internal |
1456 } // namespace v8 | 1496 } // namespace v8 |
OLD | NEW |