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 |