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

Side by Side Diff: src/interpreter/bytecodes.h

Issue 2523893003: Reland of [ignition/turbo] Perform liveness analysis on the bytecodes (Closed)
Patch Set: Export handler table for tests Created 4 years 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/bytecode-label.h ('k') | src/interpreter/control-flow-builders.h » ('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 #ifndef V8_INTERPRETER_BYTECODES_H_ 5 #ifndef V8_INTERPRETER_BYTECODES_H_
6 #define V8_INTERPRETER_BYTECODES_H_ 6 #define V8_INTERPRETER_BYTECODES_H_
7 7
8 #include <cstdint> 8 #include <cstdint>
9 #include <iosfwd> 9 #include <iosfwd>
10 #include <string> 10 #include <string>
(...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 bytecode == Bytecode::kJumpIfUndefinedConstant; 464 bytecode == Bytecode::kJumpIfUndefinedConstant;
465 } 465 }
466 466
467 // Returns true if the bytecode is a conditional jump taking 467 // Returns true if the bytecode is a conditional jump taking
468 // any kind of operand. 468 // any kind of operand.
469 static CONSTEXPR bool IsConditionalJump(Bytecode bytecode) { 469 static CONSTEXPR bool IsConditionalJump(Bytecode bytecode) {
470 return IsConditionalJumpImmediate(bytecode) || 470 return IsConditionalJumpImmediate(bytecode) ||
471 IsConditionalJumpConstant(bytecode); 471 IsConditionalJumpConstant(bytecode);
472 } 472 }
473 473
474 // Returns true if the bytecode is an unconditional jump.
475 static CONSTEXPR bool IsUnconditionalJump(Bytecode bytecode) {
476 return bytecode == Bytecode::kJump || bytecode == Bytecode::kJumpConstant ||
477 bytecode == Bytecode::kJumpLoop;
478 }
479
474 // Returns true if the bytecode is a jump or a conditional jump taking 480 // Returns true if the bytecode is a jump or a conditional jump taking
475 // an immediate byte operand (OperandType::kImm). 481 // an immediate byte operand (OperandType::kImm).
476 static CONSTEXPR bool IsJumpImmediate(Bytecode bytecode) { 482 static CONSTEXPR bool IsJumpImmediate(Bytecode bytecode) {
477 return bytecode == Bytecode::kJump || bytecode == Bytecode::kJumpLoop || 483 return bytecode == Bytecode::kJump || bytecode == Bytecode::kJumpLoop ||
478 IsConditionalJumpImmediate(bytecode); 484 IsConditionalJumpImmediate(bytecode);
479 } 485 }
480 486
481 // Returns true if the bytecode is a jump or conditional jump taking a 487 // Returns true if the bytecode is a jump or conditional jump taking a
482 // constant pool entry (OperandType::kIdx). 488 // constant pool entry (OperandType::kIdx).
483 static CONSTEXPR bool IsJumpConstant(Bytecode bytecode) { 489 static CONSTEXPR bool IsJumpConstant(Bytecode bytecode) {
484 return bytecode == Bytecode::kJumpConstant || 490 return bytecode == Bytecode::kJumpConstant ||
485 IsConditionalJumpConstant(bytecode); 491 IsConditionalJumpConstant(bytecode);
486 } 492 }
487 493
488 // Returns true if the bytecode is a jump that internally coerces the 494 // Returns true if the bytecode is a jump that internally coerces the
489 // accumulator to a boolean. 495 // accumulator to a boolean.
490 static CONSTEXPR bool IsJumpIfToBoolean(Bytecode bytecode) { 496 static CONSTEXPR bool IsJumpIfToBoolean(Bytecode bytecode) {
491 return bytecode == Bytecode::kJumpIfToBooleanTrue || 497 return bytecode == Bytecode::kJumpIfToBooleanTrue ||
492 bytecode == Bytecode::kJumpIfToBooleanFalse || 498 bytecode == Bytecode::kJumpIfToBooleanFalse ||
493 bytecode == Bytecode::kJumpIfToBooleanTrueConstant || 499 bytecode == Bytecode::kJumpIfToBooleanTrueConstant ||
494 bytecode == Bytecode::kJumpIfToBooleanFalseConstant; 500 bytecode == Bytecode::kJumpIfToBooleanFalseConstant;
495 } 501 }
496 502
497 // Returns true if the bytecode is a jump or conditional jump taking 503 // Returns true if the bytecode is a jump or conditional jump taking
498 // any kind of operand. 504 // any kind of operand.
499 static CONSTEXPR bool IsJump(Bytecode bytecode) { 505 static CONSTEXPR bool IsJump(Bytecode bytecode) {
500 return IsJumpImmediate(bytecode) || IsJumpConstant(bytecode); 506 return IsJumpImmediate(bytecode) || IsJumpConstant(bytecode);
501 } 507 }
502 508
509 // Returns true if the bytecode is a forward jump or conditional jump taking
510 // any kind of operand.
511 static CONSTEXPR bool IsForwardJump(Bytecode bytecode) {
512 return bytecode != Bytecode::kJumpLoop && IsJump(bytecode);
513 }
514
503 // Returns true if the bytecode is a conditional jump, a jump, or a return. 515 // Returns true if the bytecode is a conditional jump, a jump, or a return.
504 static CONSTEXPR bool IsJumpOrReturn(Bytecode bytecode) { 516 static CONSTEXPR bool IsJumpOrReturn(Bytecode bytecode) {
505 return bytecode == Bytecode::kReturn || IsJump(bytecode); 517 return bytecode == Bytecode::kReturn || IsJump(bytecode);
506 } 518 }
507 519
508 // Return true if |bytecode| is a jump without effects, 520 // Return true if |bytecode| is a jump without effects,
509 // e.g. any jump excluding those that include type coercion like 521 // e.g. any jump excluding those that include type coercion like
510 // JumpIfTrueToBoolean. 522 // JumpIfTrueToBoolean.
511 static CONSTEXPR bool IsJumpWithoutEffects(Bytecode bytecode) { 523 static CONSTEXPR bool IsJumpWithoutEffects(Bytecode bytecode) {
512 return IsJump(bytecode) && !IsJumpIfToBoolean(bytecode); 524 return IsJump(bytecode) && !IsJumpIfToBoolean(bytecode);
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 #undef CONSTEXPR 753 #undef CONSTEXPR
742 754
743 V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, 755 V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
744 const Bytecode& bytecode); 756 const Bytecode& bytecode);
745 757
746 } // namespace interpreter 758 } // namespace interpreter
747 } // namespace internal 759 } // namespace internal
748 } // namespace v8 760 } // namespace v8
749 761
750 #endif // V8_INTERPRETER_BYTECODES_H_ 762 #endif // V8_INTERPRETER_BYTECODES_H_
OLDNEW
« no previous file with comments | « src/interpreter/bytecode-label.h ('k') | src/interpreter/control-flow-builders.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698