OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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_COMPILER_JS_OPERATOR_H_ | 5 #ifndef V8_COMPILER_JS_OPERATOR_H_ |
6 #define V8_COMPILER_JS_OPERATOR_H_ | 6 #define V8_COMPILER_JS_OPERATOR_H_ |
7 | 7 |
8 #include "src/compiler/linkage.h" | 8 #include "src/compiler/linkage.h" |
9 #include "src/compiler/opcodes.h" | 9 #include "src/compiler/opcodes.h" |
10 #include "src/compiler/operator.h" | 10 #include "src/compiler/operator.h" |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 | 149 |
150 Operator* HasProperty() { NOPROPS(JSHasProperty, 2, 1); } | 150 Operator* HasProperty() { NOPROPS(JSHasProperty, 2, 1); } |
151 | 151 |
152 Operator* LoadContext(uint16_t depth, uint32_t index, bool immutable) { | 152 Operator* LoadContext(uint16_t depth, uint32_t index, bool immutable) { |
153 ContextAccess access(depth, index, immutable); | 153 ContextAccess access(depth, index, immutable); |
154 OP1(JSLoadContext, ContextAccess, access, | 154 OP1(JSLoadContext, ContextAccess, access, |
155 Operator::kEliminatable | Operator::kNoWrite, 1, 1); | 155 Operator::kEliminatable | Operator::kNoWrite, 1, 1); |
156 } | 156 } |
157 Operator* StoreContext(uint16_t depth, uint32_t index) { | 157 Operator* StoreContext(uint16_t depth, uint32_t index) { |
158 ContextAccess access(depth, index, false); | 158 ContextAccess access(depth, index, false); |
159 OP1(JSStoreContext, ContextAccess, access, Operator::kNoProperties, 2, 1); | 159 OP1(JSStoreContext, ContextAccess, access, Operator::kNoProperties, 2, 0); |
160 } | 160 } |
161 | 161 |
162 Operator* TypeOf() { SIMPLE(JSTypeOf, Operator::kPure, 1, 1); } | 162 Operator* TypeOf() { SIMPLE(JSTypeOf, Operator::kPure, 1, 1); } |
163 Operator* InstanceOf() { NOPROPS(JSInstanceOf, 2, 1); } | 163 Operator* InstanceOf() { NOPROPS(JSInstanceOf, 2, 1); } |
164 Operator* Debugger() { NOPROPS(JSDebugger, 0, 0); } | 164 Operator* Debugger() { NOPROPS(JSDebugger, 0, 0); } |
165 | 165 |
166 // TODO(titzer): nail down the static parts of each of these context flavors. | 166 // TODO(titzer): nail down the static parts of each of these context flavors. |
167 Operator* CreateFunctionContext() { NOPROPS(JSCreateFunctionContext, 1, 1); } | 167 Operator* CreateFunctionContext() { NOPROPS(JSCreateFunctionContext, 1, 1); } |
168 Operator* CreateCatchContext(Unique<String> name) { | 168 Operator* CreateCatchContext(Unique<String> name) { |
169 OP1(JSCreateCatchContext, Unique<String>, name, Operator::kNoProperties, 1, | 169 OP1(JSCreateCatchContext, Unique<String>, name, Operator::kNoProperties, 1, |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 static int HashCode(Runtime::FunctionId val) { return static_cast<int>(val); } | 217 static int HashCode(Runtime::FunctionId val) { return static_cast<int>(val); } |
218 static bool Equals(Runtime::FunctionId a, Runtime::FunctionId b) { | 218 static bool Equals(Runtime::FunctionId a, Runtime::FunctionId b) { |
219 return a == b; | 219 return a == b; |
220 } | 220 } |
221 }; | 221 }; |
222 } | 222 } |
223 } | 223 } |
224 } // namespace v8::internal::compiler | 224 } // namespace v8::internal::compiler |
225 | 225 |
226 #endif // V8_COMPILER_JS_OPERATOR_H_ | 226 #endif // V8_COMPILER_JS_OPERATOR_H_ |
OLD | NEW |