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

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: Updated a test to avoid using Handle<Object> in initialization because trybots fail. 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 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 },
410 0}};
411
412 for (size_t i = 0; i < arraysize(snippets); i++) {
rmcilroy 2015/10/14 14:32:44 Weird indentation here?
mythria 2015/10/14 14:59:55 Done.
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), U8(3), //
473 B(Return) //
474 },
475 1,
476 {268, 0, 0, 0}},
477 {"var x = 0; var a = 2, b = 3; return x && ("
478 #define X "a, b, a, b, "
479 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
480 #undef X
481 "3);",
482 3 * kPointerSize,
483 1,
484 282,
485 {
486 B(LdaZero), //
487 B(Star), R(0), //
488 B(LdaSmi8), U8(2), //
489 B(Star), R(1), //
490 B(LdaSmi8), U8(3), //
491 B(Star), R(2), //
492 B(Ldar), R(0), //
493 B(JumpIfToBooleanFalseConstant), U8(0), //
494 #define X B(Ldar), R(1), B(Ldar), R(2), B(Ldar), R(1), B(Ldar), R(2),
495 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 //
496 #undef X //
497 B(LdaSmi8), U8(3), //
498 B(Return) //
499 },
500 1,
501 {268, 0, 0, 0}},
502 {"return 0 && 3;",
503 0 * kPointerSize,
504 1,
505 2,
506 {
507 B(LdaZero), //
508 B(Return) //
509 },
510 0},
511 {"return 1 || 3;",
512 0 * kPointerSize,
513 1,
514 3,
515 {
516 B(LdaSmi8), U8(1), //
517 B(Return) //
518 },
519 0},
520 {"var x = 1; return x && 3 || 0,1;",
rmcilroy 2015/10/14 14:32:44 nit - /s/0,1/0, 1
mythria 2015/10/14 14:59:55 Done.
521 1 * kPointerSize,
522 1,
523 16,
524 {
525 B(LdaSmi8), U8(1), //
526 B(Star), R(0), //
527 B(Ldar), R(0), //
528 B(JumpIfToBooleanFalse), U8(4), //
529 B(LdaSmi8), U8(3), //
530 B(JumpIfToBooleanTrue), U8(3), //
531 B(LdaZero), //
532 B(LdaSmi8), U8(1), //
533 B(Return) //
534 },
398 0}}; 535 0}};
399 536
400 for (size_t i = 0; i < arraysize(snippets); i++) { 537 for (size_t i = 0; i < arraysize(snippets); i++) {
401 Handle<BytecodeArray> bytecode_array = 538 Handle<BytecodeArray> bytecode_array =
402 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); 539 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet);
403 CheckBytecodeArrayEqual(snippets[i], bytecode_array); 540 CheckBytecodeArrayEqual(snippets[i], bytecode_array);
404 } 541 }
405 } 542 }
406 543
407 544
(...skipping 1639 matching lines...) Expand 10 before | Expand all | Expand 10 after
2047 for (size_t i = 0; i < arraysize(snippets); i++) { 2184 for (size_t i = 0; i < arraysize(snippets); i++) {
2048 Handle<BytecodeArray> bytecode_array = 2185 Handle<BytecodeArray> bytecode_array =
2049 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); 2186 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet);
2050 CheckBytecodeArrayEqual(snippets[i], bytecode_array); 2187 CheckBytecodeArrayEqual(snippets[i], bytecode_array);
2051 } 2188 }
2052 } 2189 }
2053 2190
2054 } // namespace interpreter 2191 } // namespace interpreter
2055 } // namespace internal 2192 } // namespace internal
2056 } // namespace v8 2193 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698