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/runtime/runtime.h" | 8 #include "src/runtime/runtime.h" |
9 #include "src/unique.h" | 9 #include "src/unique.h" |
10 | 10 |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 std::ostream& operator<<(std::ostream&, DynamicContextAccess const&); | 224 std::ostream& operator<<(std::ostream&, DynamicContextAccess const&); |
225 | 225 |
226 DynamicContextAccess const& DynamicContextAccessOf(Operator const*); | 226 DynamicContextAccess const& DynamicContextAccessOf(Operator const*); |
227 | 227 |
228 | 228 |
229 // Defines the property being loaded from an object by a named load. This is | 229 // Defines the property being loaded from an object by a named load. This is |
230 // used as a parameter by JSLoadNamed and JSLoadGlobal operators. | 230 // used as a parameter by JSLoadNamed and JSLoadGlobal operators. |
231 class LoadNamedParameters final { | 231 class LoadNamedParameters final { |
232 public: | 232 public: |
233 LoadNamedParameters(const Unique<Name>& name, const VectorSlotPair& feedback, | 233 LoadNamedParameters(const Unique<Name>& name, const VectorSlotPair& feedback, |
| 234 LanguageMode language_mode, |
234 ContextualMode contextual_mode) | 235 ContextualMode contextual_mode) |
235 : name_(name), feedback_(feedback), contextual_mode_(contextual_mode) {} | 236 : name_(name), |
| 237 feedback_(feedback), |
| 238 language_mode_(language_mode), |
| 239 contextual_mode_(contextual_mode) {} |
236 | 240 |
237 const Unique<Name>& name() const { return name_; } | 241 const Unique<Name>& name() const { return name_; } |
| 242 LanguageMode language_mode() const { return language_mode_; } |
238 ContextualMode contextual_mode() const { return contextual_mode_; } | 243 ContextualMode contextual_mode() const { return contextual_mode_; } |
239 | 244 |
240 const VectorSlotPair& feedback() const { return feedback_; } | 245 const VectorSlotPair& feedback() const { return feedback_; } |
241 | 246 |
242 private: | 247 private: |
243 const Unique<Name> name_; | 248 const Unique<Name> name_; |
244 const VectorSlotPair feedback_; | 249 const VectorSlotPair feedback_; |
| 250 const LanguageMode language_mode_; |
245 const ContextualMode contextual_mode_; | 251 const ContextualMode contextual_mode_; |
246 }; | 252 }; |
247 | 253 |
248 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); | 254 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); |
249 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); | 255 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); |
250 | 256 |
251 size_t hash_value(LoadNamedParameters const&); | 257 size_t hash_value(LoadNamedParameters const&); |
252 | 258 |
253 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); | 259 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); |
254 | 260 |
255 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); | 261 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); |
256 | 262 |
257 const LoadNamedParameters& LoadGlobalParametersOf(const Operator* op); | 263 const LoadNamedParameters& LoadGlobalParametersOf(const Operator* op); |
258 | 264 |
259 | 265 |
260 // Defines the property being loaded from an object. This is | 266 // Defines the property being loaded from an object. This is |
261 // used as a parameter by JSLoadProperty operators. | 267 // used as a parameter by JSLoadProperty operators. |
262 class LoadPropertyParameters final { | 268 class LoadPropertyParameters final { |
263 public: | 269 public: |
264 explicit LoadPropertyParameters(const VectorSlotPair& feedback) | 270 explicit LoadPropertyParameters(const VectorSlotPair& feedback, |
265 : feedback_(feedback) {} | 271 LanguageMode language_mode) |
| 272 : feedback_(feedback), language_mode_(language_mode) {} |
266 | 273 |
267 const VectorSlotPair& feedback() const { return feedback_; } | 274 const VectorSlotPair& feedback() const { return feedback_; } |
268 | 275 |
| 276 LanguageMode language_mode() const { return language_mode_; } |
| 277 |
269 private: | 278 private: |
270 const VectorSlotPair feedback_; | 279 const VectorSlotPair feedback_; |
| 280 const LanguageMode language_mode_; |
271 }; | 281 }; |
272 | 282 |
273 bool operator==(LoadPropertyParameters const&, LoadPropertyParameters const&); | 283 bool operator==(LoadPropertyParameters const&, LoadPropertyParameters const&); |
274 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); | 284 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); |
275 | 285 |
276 size_t hash_value(LoadPropertyParameters const&); | 286 size_t hash_value(LoadPropertyParameters const&); |
277 | 287 |
278 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); | 288 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); |
279 | 289 |
280 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); | 290 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
403 const Operator* CreateLiteralArray(int literal_flags); | 413 const Operator* CreateLiteralArray(int literal_flags); |
404 const Operator* CreateLiteralObject(int literal_flags); | 414 const Operator* CreateLiteralObject(int literal_flags); |
405 | 415 |
406 const Operator* CallFunction( | 416 const Operator* CallFunction( |
407 size_t arity, CallFunctionFlags flags, LanguageMode language_mode, | 417 size_t arity, CallFunctionFlags flags, LanguageMode language_mode, |
408 VectorSlotPair const& feedback = VectorSlotPair()); | 418 VectorSlotPair const& feedback = VectorSlotPair()); |
409 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); | 419 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); |
410 | 420 |
411 const Operator* CallConstruct(int arguments); | 421 const Operator* CallConstruct(int arguments); |
412 | 422 |
413 const Operator* LoadProperty(const VectorSlotPair& feedback); | 423 const Operator* LoadProperty(const VectorSlotPair& feedback, |
| 424 LanguageMode language_mode); |
414 const Operator* LoadNamed(const Unique<Name>& name, | 425 const Operator* LoadNamed(const Unique<Name>& name, |
415 const VectorSlotPair& feedback); | 426 const VectorSlotPair& feedback, |
| 427 LanguageMode language_mode); |
416 | 428 |
417 const Operator* StoreProperty(LanguageMode language_mode, | 429 const Operator* StoreProperty(LanguageMode language_mode, |
418 const VectorSlotPair& feedback); | 430 const VectorSlotPair& feedback); |
419 const Operator* StoreNamed(LanguageMode language_mode, | 431 const Operator* StoreNamed(LanguageMode language_mode, |
420 const Unique<Name>& name, | 432 const Unique<Name>& name, |
421 const VectorSlotPair& feedback); | 433 const VectorSlotPair& feedback); |
422 | 434 |
423 const Operator* DeleteProperty(LanguageMode language_mode); | 435 const Operator* DeleteProperty(LanguageMode language_mode); |
424 | 436 |
425 const Operator* HasProperty(); | 437 const Operator* HasProperty(); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 Zone* const zone_; | 479 Zone* const zone_; |
468 | 480 |
469 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); | 481 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); |
470 }; | 482 }; |
471 | 483 |
472 } // namespace compiler | 484 } // namespace compiler |
473 } // namespace internal | 485 } // namespace internal |
474 } // namespace v8 | 486 } // namespace v8 |
475 | 487 |
476 #endif // V8_COMPILER_JS_OPERATOR_H_ | 488 #endif // V8_COMPILER_JS_OPERATOR_H_ |
OLD | NEW |