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

Side by Side Diff: test/cctest/interpreter/test-bytecode-generator.cc

Issue 1399773002: [Interpreter] Adds logical and, logical or and comma operators to interpreter (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fixed few more nits 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
« no previous file with comments | « src/interpreter/interpreter.cc ('k') | test/cctest/interpreter/test-interpreter.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/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 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 13, 388 13,
389 { 389 {
390 B(LdaSmi8), U8(10), // 390 B(LdaSmi8), U8(10), //
391 B(Star), R(0), // 391 B(Star), R(0), //
392 B(Ldar), R(0), // Easy to spot r1 not really needed here. 392 B(Ldar), R(0), // Easy to spot r1 not really needed here.
393 B(Star), R(1), // Dead store. 393 B(Star), R(1), // Dead store.
394 B(LdaSmi8), U8(3), // 394 B(LdaSmi8), U8(3), //
395 B(ShiftRightLogical), R(1), // 395 B(ShiftRightLogical), R(1), //
396 B(Return) // 396 B(Return) //
397 }, 397 },
398 0},
399 {"var x = 0; return (x, 3);",
400 1 * kPointerSize,
401 1,
402 8,
403 {
404 B(LdaZero), //
405 B(Star), R(0), //
406 B(Ldar), R(0), //
407 B(LdaSmi8), U8(3), //
408 B(Return) //
409 },
398 0}}; 410 0}};
399 411
400 for (size_t i = 0; i < arraysize(snippets); i++) { 412 for (size_t i = 0; i < arraysize(snippets); i++) {
413 Handle<BytecodeArray> bytecode_array =
414 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet);
415 CheckBytecodeArrayEqual(snippets[i], bytecode_array);
416 }
417 }
418
419
420 TEST(LogicalExpressions) {
421 InitializedHandleScope handle_scope;
422 BytecodeGeneratorHelper helper;
423
424
425 ExpectedSnippet<int> snippets[] = {
426 {"var x = 0; return x || 3;",
427 1 * kPointerSize,
428 1,
429 10,
430 {
431 B(LdaZero), //
432 B(Star), R(0), //
433 B(Ldar), R(0), //
434 B(JumpIfToBooleanTrue), U8(4), //
435 B(LdaSmi8), U8(3), //
436 B(Return) //
437 },
438 0},
439 {"var x = 0; return x && 3;",
440 1 * kPointerSize,
441 1,
442 10,
443 {
444 B(LdaZero), //
445 B(Star), R(0), //
446 B(Ldar), R(0), //
447 B(JumpIfToBooleanFalse), U8(4), //
448 B(LdaSmi8), U8(3), //
449 B(Return) //
450 },
451 0},
452 {"var x = 1; var a = 2, b = 3; return x || ("
453 #define X "a, b, a, b, "
454 X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
455 #undef X
456 "3);",
457 3 * kPointerSize,
458 1,
459 283,
460 {
461 B(LdaSmi8), U8(1), //
462 B(Star), R(0), //
463 B(LdaSmi8), U8(2), //
464 B(Star), R(1), //
465 B(LdaSmi8), U8(3), //
466 B(Star), R(2), //
467 B(Ldar), R(0), //
468 B(JumpIfToBooleanTrueConstant), U8(0), //
469 #define X B(Ldar), R(1), B(Ldar), R(2), B(Ldar), R(1), B(Ldar), R(2),
470 X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X //
471 #undef X //
472 B(LdaSmi8),
rmcilroy 2015/10/14 15:34:01 Bytecode and operands on one line (I've noticed gi
473 U8(3), //
474 B(Return) //
475 },
476 1,
477 {268, 0, 0, 0}},
478 {"var x = 0; var a = 2, b = 3; return x && ("
479 #define X "a, b, a, b, "
480 X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
481 #undef X
482 "3);",
483 3 * kPointerSize,
484 1,
485 282,
486 {
487 B(LdaZero), //
488 B(Star), R(0), //
489 B(LdaSmi8), U8(2), //
490 B(Star), R(1), //
491 B(LdaSmi8), U8(3), //
492 B(Star), R(2), //
493 B(Ldar), R(0), //
494 B(JumpIfToBooleanFalseConstant), U8(0), //
495 #define X B(Ldar), R(1), B(Ldar), R(2), B(Ldar), R(1), B(Ldar), R(2),
496 X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X //
497 #undef X //
498 B(LdaSmi8),
rmcilroy 2015/10/14 15:34:01 ditto
499 U8(3), //
500 B(Return) //
501 },
502 1,
503 {268, 0, 0, 0}},
504 {"return 0 && 3;",
505 0 * kPointerSize,
506 1,
507 2,
508 {
509 B(LdaZero), //
510 B(Return) //
511 },
512 0},
513 {"return 1 || 3;",
514 0 * kPointerSize,
515 1,
516 3,
517 {
518 B(LdaSmi8), U8(1), //
519 B(Return) //
520 },
521 0},
522 {"var x = 1; return x && 3 || 0, 1;",
523 1 * kPointerSize,
524 1,
525 16,
526 {
527 B(LdaSmi8), U8(1), //
528 B(Star), R(0), //
529 B(Ldar), R(0), //
530 B(JumpIfToBooleanFalse), U8(4), //
531 B(LdaSmi8), U8(3), //
532 B(JumpIfToBooleanTrue), U8(3), //
533 B(LdaZero), //
534 B(LdaSmi8), U8(1), //
535 B(Return) //
536 },
537 0}};
538
539 for (size_t i = 0; i < arraysize(snippets); i++) {
401 Handle<BytecodeArray> bytecode_array = 540 Handle<BytecodeArray> bytecode_array =
402 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); 541 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet);
403 CheckBytecodeArrayEqual(snippets[i], bytecode_array); 542 CheckBytecodeArrayEqual(snippets[i], bytecode_array);
404 } 543 }
405 } 544 }
406 545
407 546
408 TEST(Parameters) { 547 TEST(Parameters) {
409 InitializedHandleScope handle_scope; 548 InitializedHandleScope handle_scope;
410 BytecodeGeneratorHelper helper; 549 BytecodeGeneratorHelper helper;
(...skipping 1636 matching lines...) Expand 10 before | Expand all | Expand 10 after
2047 for (size_t i = 0; i < arraysize(snippets); i++) { 2186 for (size_t i = 0; i < arraysize(snippets); i++) {
2048 Handle<BytecodeArray> bytecode_array = 2187 Handle<BytecodeArray> bytecode_array =
2049 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); 2188 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet);
2050 CheckBytecodeArrayEqual(snippets[i], bytecode_array); 2189 CheckBytecodeArrayEqual(snippets[i], bytecode_array);
2051 } 2190 }
2052 } 2191 }
2053 2192
2054 } // namespace interpreter 2193 } // namespace interpreter
2055 } // namespace internal 2194 } // namespace internal
2056 } // namespace v8 2195 } // namespace v8
OLDNEW
« no previous file with comments | « src/interpreter/interpreter.cc ('k') | test/cctest/interpreter/test-interpreter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698