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 <iosfwd> | 8 #include <iosfwd> |
9 | 9 |
10 // Clients of this interface shouldn't depend on lots of interpreter internals. | 10 // Clients of this interface shouldn't depend on lots of interpreter internals. |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 V(TestGreaterThan, OperandType::kReg8) \ | 111 V(TestGreaterThan, OperandType::kReg8) \ |
112 V(TestLessThanOrEqual, OperandType::kReg8) \ | 112 V(TestLessThanOrEqual, OperandType::kReg8) \ |
113 V(TestGreaterThanOrEqual, OperandType::kReg8) \ | 113 V(TestGreaterThanOrEqual, OperandType::kReg8) \ |
114 V(TestInstanceOf, OperandType::kReg8) \ | 114 V(TestInstanceOf, OperandType::kReg8) \ |
115 V(TestIn, OperandType::kReg8) \ | 115 V(TestIn, OperandType::kReg8) \ |
116 \ | 116 \ |
117 /* Cast operators */ \ | 117 /* Cast operators */ \ |
118 V(ToBoolean, OperandType::kNone) \ | 118 V(ToBoolean, OperandType::kNone) \ |
119 V(ToName, OperandType::kNone) \ | 119 V(ToName, OperandType::kNone) \ |
120 V(ToNumber, OperandType::kNone) \ | 120 V(ToNumber, OperandType::kNone) \ |
| 121 V(ToObject, OperandType::kNone) \ |
121 \ | 122 \ |
122 /* Literals */ \ | 123 /* Literals */ \ |
123 V(CreateRegExpLiteral, OperandType::kIdx8, OperandType::kReg8) \ | 124 V(CreateRegExpLiteral, OperandType::kIdx8, OperandType::kReg8) \ |
124 V(CreateArrayLiteral, OperandType::kIdx8, OperandType::kImm8) \ | 125 V(CreateArrayLiteral, OperandType::kIdx8, OperandType::kImm8) \ |
125 V(CreateObjectLiteral, OperandType::kIdx8, OperandType::kImm8) \ | 126 V(CreateObjectLiteral, OperandType::kIdx8, OperandType::kImm8) \ |
126 \ | 127 \ |
127 /* Closure allocation */ \ | 128 /* Closure allocation */ \ |
128 V(CreateClosure, OperandType::kImm8) \ | 129 V(CreateClosure, OperandType::kImm8) \ |
129 \ | 130 \ |
130 /* Arguments allocation */ \ | 131 /* Arguments allocation */ \ |
131 V(CreateMappedArguments, OperandType::kNone) \ | 132 V(CreateMappedArguments, OperandType::kNone) \ |
132 V(CreateUnmappedArguments, OperandType::kNone) \ | 133 V(CreateUnmappedArguments, OperandType::kNone) \ |
133 \ | 134 \ |
134 /* Control Flow */ \ | 135 /* Control Flow */ \ |
135 V(Jump, OperandType::kImm8) \ | 136 V(Jump, OperandType::kImm8) \ |
136 V(JumpConstant, OperandType::kIdx8) \ | 137 V(JumpConstant, OperandType::kIdx8) \ |
137 V(JumpIfTrue, OperandType::kImm8) \ | 138 V(JumpIfTrue, OperandType::kImm8) \ |
138 V(JumpIfTrueConstant, OperandType::kIdx8) \ | 139 V(JumpIfTrueConstant, OperandType::kIdx8) \ |
139 V(JumpIfFalse, OperandType::kImm8) \ | 140 V(JumpIfFalse, OperandType::kImm8) \ |
140 V(JumpIfFalseConstant, OperandType::kIdx8) \ | 141 V(JumpIfFalseConstant, OperandType::kIdx8) \ |
141 V(JumpIfToBooleanTrue, OperandType::kImm8) \ | 142 V(JumpIfToBooleanTrue, OperandType::kImm8) \ |
142 V(JumpIfToBooleanTrueConstant, OperandType::kIdx8) \ | 143 V(JumpIfToBooleanTrueConstant, OperandType::kIdx8) \ |
143 V(JumpIfToBooleanFalse, OperandType::kImm8) \ | 144 V(JumpIfToBooleanFalse, OperandType::kImm8) \ |
144 V(JumpIfToBooleanFalseConstant, OperandType::kIdx8) \ | 145 V(JumpIfToBooleanFalseConstant, OperandType::kIdx8) \ |
| 146 V(JumpIfNull, OperandType::kImm8) \ |
| 147 V(JumpIfNullConstant, OperandType::kIdx8) \ |
| 148 V(JumpIfUndefined, OperandType::kImm8) \ |
| 149 V(JumpIfUndefinedConstant, OperandType::kIdx8) \ |
| 150 \ |
| 151 /* Complex flow control For..in */ \ |
| 152 V(ForInPrepare, OperandType::kReg8) \ |
| 153 V(ForInNext, OperandType::kReg8, OperandType::kReg8) \ |
| 154 V(ForInDone, OperandType::kReg8) \ |
| 155 \ |
| 156 /* Non-local flow control */ \ |
145 V(Throw, OperandType::kNone) \ | 157 V(Throw, OperandType::kNone) \ |
146 V(Return, OperandType::kNone) | 158 V(Return, OperandType::kNone) |
147 | 159 |
148 | 160 |
149 // Enumeration of the size classes of operand types used by bytecodes. | 161 // Enumeration of the size classes of operand types used by bytecodes. |
150 enum class OperandSize : uint8_t { | 162 enum class OperandSize : uint8_t { |
151 kNone = 0, | 163 kNone = 0, |
152 kByte = 1, | 164 kByte = 1, |
153 kShort = 2, | 165 kShort = 2, |
154 }; | 166 }; |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 | 316 |
305 std::ostream& operator<<(std::ostream& os, const Bytecode& bytecode); | 317 std::ostream& operator<<(std::ostream& os, const Bytecode& bytecode); |
306 std::ostream& operator<<(std::ostream& os, const OperandType& operand_type); | 318 std::ostream& operator<<(std::ostream& os, const OperandType& operand_type); |
307 std::ostream& operator<<(std::ostream& os, const OperandSize& operand_type); | 319 std::ostream& operator<<(std::ostream& os, const OperandSize& operand_type); |
308 | 320 |
309 } // namespace interpreter | 321 } // namespace interpreter |
310 } // namespace internal | 322 } // namespace internal |
311 } // namespace v8 | 323 } // namespace v8 |
312 | 324 |
313 #endif // V8_INTERPRETER_BYTECODES_H_ | 325 #endif // V8_INTERPRETER_BYTECODES_H_ |
OLD | NEW |