| 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 #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 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 V(Dec, AccumulatorUse::kReadWrite, OperandType::kIdx) \ | 138 V(Dec, AccumulatorUse::kReadWrite, OperandType::kIdx) \ |
| 139 V(ToBooleanLogicalNot, AccumulatorUse::kReadWrite) \ | 139 V(ToBooleanLogicalNot, AccumulatorUse::kReadWrite) \ |
| 140 V(LogicalNot, AccumulatorUse::kReadWrite) \ | 140 V(LogicalNot, AccumulatorUse::kReadWrite) \ |
| 141 V(TypeOf, AccumulatorUse::kReadWrite) \ | 141 V(TypeOf, AccumulatorUse::kReadWrite) \ |
| 142 V(DeletePropertyStrict, AccumulatorUse::kReadWrite, OperandType::kReg) \ | 142 V(DeletePropertyStrict, AccumulatorUse::kReadWrite, OperandType::kReg) \ |
| 143 V(DeletePropertySloppy, AccumulatorUse::kReadWrite, OperandType::kReg) \ | 143 V(DeletePropertySloppy, AccumulatorUse::kReadWrite, OperandType::kReg) \ |
| 144 \ | 144 \ |
| 145 /* Call operations */ \ | 145 /* Call operations */ \ |
| 146 V(Call, AccumulatorUse::kWrite, OperandType::kReg, OperandType::kRegList, \ | 146 V(Call, AccumulatorUse::kWrite, OperandType::kReg, OperandType::kRegList, \ |
| 147 OperandType::kRegCount, OperandType::kIdx) \ | 147 OperandType::kRegCount, OperandType::kIdx) \ |
| 148 V(CallProperty, AccumulatorUse::kWrite, OperandType::kReg, \ |
| 149 OperandType::kRegList, OperandType::kRegCount, OperandType::kIdx) \ |
| 148 V(TailCall, AccumulatorUse::kWrite, OperandType::kReg, \ | 150 V(TailCall, AccumulatorUse::kWrite, OperandType::kReg, \ |
| 149 OperandType::kRegList, OperandType::kRegCount, OperandType::kIdx) \ | 151 OperandType::kRegList, OperandType::kRegCount, OperandType::kIdx) \ |
| 150 V(CallRuntime, AccumulatorUse::kWrite, OperandType::kRuntimeId, \ | 152 V(CallRuntime, AccumulatorUse::kWrite, OperandType::kRuntimeId, \ |
| 151 OperandType::kRegList, OperandType::kRegCount) \ | 153 OperandType::kRegList, OperandType::kRegCount) \ |
| 152 V(CallRuntimeForPair, AccumulatorUse::kNone, OperandType::kRuntimeId, \ | 154 V(CallRuntimeForPair, AccumulatorUse::kNone, OperandType::kRuntimeId, \ |
| 153 OperandType::kRegList, OperandType::kRegCount, OperandType::kRegOutPair) \ | 155 OperandType::kRegList, OperandType::kRegCount, OperandType::kRegOutPair) \ |
| 154 V(CallJSRuntime, AccumulatorUse::kWrite, OperandType::kIdx, \ | 156 V(CallJSRuntime, AccumulatorUse::kWrite, OperandType::kIdx, \ |
| 155 OperandType::kRegList, OperandType::kRegCount) \ | 157 OperandType::kRegList, OperandType::kRegCount) \ |
| 156 \ | 158 \ |
| 157 /* Intrinsics */ \ | 159 /* Intrinsics */ \ |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 518 return bytecode == Bytecode::kLdar || bytecode == Bytecode::kStar; | 520 return bytecode == Bytecode::kLdar || bytecode == Bytecode::kStar; |
| 519 } | 521 } |
| 520 | 522 |
| 521 // Returns true if |bytecode| puts a name in the accumulator. | 523 // Returns true if |bytecode| puts a name in the accumulator. |
| 522 static CONSTEXPR bool PutsNameInAccumulator(Bytecode bytecode) { | 524 static CONSTEXPR bool PutsNameInAccumulator(Bytecode bytecode) { |
| 523 return bytecode == Bytecode::kTypeOf; | 525 return bytecode == Bytecode::kTypeOf; |
| 524 } | 526 } |
| 525 | 527 |
| 526 // Returns true if the bytecode is a call or a constructor call. | 528 // Returns true if the bytecode is a call or a constructor call. |
| 527 static CONSTEXPR bool IsCallOrNew(Bytecode bytecode) { | 529 static CONSTEXPR bool IsCallOrNew(Bytecode bytecode) { |
| 528 return bytecode == Bytecode::kCall || bytecode == Bytecode::kTailCall || | 530 return bytecode == Bytecode::kCall || bytecode == Bytecode::kCallProperty || |
| 529 bytecode == Bytecode::kNew; | 531 bytecode == Bytecode::kTailCall || bytecode == Bytecode::kNew; |
| 530 } | 532 } |
| 531 | 533 |
| 532 // Returns true if the bytecode is a call to the runtime. | 534 // Returns true if the bytecode is a call to the runtime. |
| 533 static CONSTEXPR bool IsCallRuntime(Bytecode bytecode) { | 535 static CONSTEXPR bool IsCallRuntime(Bytecode bytecode) { |
| 534 return bytecode == Bytecode::kCallRuntime || | 536 return bytecode == Bytecode::kCallRuntime || |
| 535 bytecode == Bytecode::kCallRuntimeForPair || | 537 bytecode == Bytecode::kCallRuntimeForPair || |
| 536 bytecode == Bytecode::kInvokeIntrinsic; | 538 bytecode == Bytecode::kInvokeIntrinsic; |
| 537 } | 539 } |
| 538 | 540 |
| 539 // Returns true if the bytecode is a scaling prefix bytecode. | 541 // Returns true if the bytecode is a scaling prefix bytecode. |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 734 #undef CONSTEXPR | 736 #undef CONSTEXPR |
| 735 | 737 |
| 736 V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, | 738 V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, |
| 737 const Bytecode& bytecode); | 739 const Bytecode& bytecode); |
| 738 | 740 |
| 739 } // namespace interpreter | 741 } // namespace interpreter |
| 740 } // namespace internal | 742 } // namespace internal |
| 741 } // namespace v8 | 743 } // namespace v8 |
| 742 | 744 |
| 743 #endif // V8_INTERPRETER_BYTECODES_H_ | 745 #endif // V8_INTERPRETER_BYTECODES_H_ |
| OLD | NEW |