| 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 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 | 267 |
| 268 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); | 268 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); |
| 269 | 269 |
| 270 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); | 270 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); |
| 271 | 271 |
| 272 | 272 |
| 273 // Defines the property being stored to an object by a named store. This is | 273 // Defines the property being stored to an object by a named store. This is |
| 274 // used as a parameter by JSStoreNamed operators. | 274 // used as a parameter by JSStoreNamed operators. |
| 275 class StoreNamedParameters final { | 275 class StoreNamedParameters final { |
| 276 public: | 276 public: |
| 277 StoreNamedParameters(LanguageMode language_mode, const Unique<Name>& name) | 277 StoreNamedParameters(LanguageMode language_mode, |
| 278 : language_mode_(language_mode), name_(name) {} | 278 const ResolvedFeedbackSlot& feedback, |
| 279 const Unique<Name>& name) |
| 280 : language_mode_(language_mode), name_(name), feedback_(feedback) {} |
| 279 | 281 |
| 280 LanguageMode language_mode() const { return language_mode_; } | 282 LanguageMode language_mode() const { return language_mode_; } |
| 283 const ResolvedFeedbackSlot& feedback() const { return feedback_; } |
| 281 const Unique<Name>& name() const { return name_; } | 284 const Unique<Name>& name() const { return name_; } |
| 282 | 285 |
| 283 private: | 286 private: |
| 284 const LanguageMode language_mode_; | 287 const LanguageMode language_mode_; |
| 285 const Unique<Name> name_; | 288 const Unique<Name> name_; |
| 289 const ResolvedFeedbackSlot feedback_; |
| 286 }; | 290 }; |
| 287 | 291 |
| 288 bool operator==(StoreNamedParameters const&, StoreNamedParameters const&); | 292 bool operator==(StoreNamedParameters const&, StoreNamedParameters const&); |
| 289 bool operator!=(StoreNamedParameters const&, StoreNamedParameters const&); | 293 bool operator!=(StoreNamedParameters const&, StoreNamedParameters const&); |
| 290 | 294 |
| 291 size_t hash_value(StoreNamedParameters const&); | 295 size_t hash_value(StoreNamedParameters const&); |
| 292 | 296 |
| 293 std::ostream& operator<<(std::ostream&, StoreNamedParameters const&); | 297 std::ostream& operator<<(std::ostream&, StoreNamedParameters const&); |
| 294 | 298 |
| 295 const StoreNamedParameters& StoreNamedParametersOf(const Operator* op); | 299 const StoreNamedParameters& StoreNamedParametersOf(const Operator* op); |
| 296 | 300 |
| 297 | 301 |
| 302 // Defines the property being stored to an object. This is used as a parameter |
| 303 // by JSStoreProperty operators. |
| 304 class StorePropertyParameters final { |
| 305 public: |
| 306 StorePropertyParameters(LanguageMode language_mode, |
| 307 const ResolvedFeedbackSlot& feedback) |
| 308 : language_mode_(language_mode), feedback_(feedback) {} |
| 309 |
| 310 LanguageMode language_mode() const { return language_mode_; } |
| 311 const ResolvedFeedbackSlot& feedback() const { return feedback_; } |
| 312 |
| 313 private: |
| 314 const LanguageMode language_mode_; |
| 315 const ResolvedFeedbackSlot feedback_; |
| 316 }; |
| 317 |
| 318 bool operator==(StorePropertyParameters const&, StorePropertyParameters const&); |
| 319 bool operator!=(StorePropertyParameters const&, StorePropertyParameters const&); |
| 320 |
| 321 size_t hash_value(StorePropertyParameters const&); |
| 322 |
| 323 std::ostream& operator<<(std::ostream&, StorePropertyParameters const&); |
| 324 |
| 325 const StorePropertyParameters& StorePropertyParametersOf(const Operator* op); |
| 326 |
| 327 |
| 298 // Defines shared information for the closure that should be created. This is | 328 // Defines shared information for the closure that should be created. This is |
| 299 // used as a parameter by JSCreateClosure operators. | 329 // used as a parameter by JSCreateClosure operators. |
| 300 class CreateClosureParameters final { | 330 class CreateClosureParameters final { |
| 301 public: | 331 public: |
| 302 CreateClosureParameters(Handle<SharedFunctionInfo> shared_info, | 332 CreateClosureParameters(Handle<SharedFunctionInfo> shared_info, |
| 303 PretenureFlag pretenure) | 333 PretenureFlag pretenure) |
| 304 : shared_info_(shared_info), pretenure_(pretenure) {} | 334 : shared_info_(shared_info), pretenure_(pretenure) {} |
| 305 | 335 |
| 306 Handle<SharedFunctionInfo> shared_info() const { return shared_info_; } | 336 Handle<SharedFunctionInfo> shared_info() const { return shared_info_; } |
| 307 PretenureFlag pretenure() const { return pretenure_; } | 337 PretenureFlag pretenure() const { return pretenure_; } |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 LanguageMode language_mode); | 396 LanguageMode language_mode); |
| 367 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); | 397 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); |
| 368 | 398 |
| 369 const Operator* CallConstruct(int arguments); | 399 const Operator* CallConstruct(int arguments); |
| 370 | 400 |
| 371 const Operator* LoadProperty(const ResolvedFeedbackSlot& feedback); | 401 const Operator* LoadProperty(const ResolvedFeedbackSlot& feedback); |
| 372 const Operator* LoadNamed(const Unique<Name>& name, | 402 const Operator* LoadNamed(const Unique<Name>& name, |
| 373 const ResolvedFeedbackSlot& feedback, | 403 const ResolvedFeedbackSlot& feedback, |
| 374 ContextualMode contextual_mode = NOT_CONTEXTUAL); | 404 ContextualMode contextual_mode = NOT_CONTEXTUAL); |
| 375 | 405 |
| 376 const Operator* StoreProperty(LanguageMode language_mode); | 406 const Operator* StoreProperty(LanguageMode language_mode, |
| 407 const ResolvedFeedbackSlot& feedback); |
| 377 const Operator* StoreNamed(LanguageMode language_mode, | 408 const Operator* StoreNamed(LanguageMode language_mode, |
| 378 const Unique<Name>& name); | 409 const Unique<Name>& name, |
| 410 const ResolvedFeedbackSlot& feedback); |
| 379 | 411 |
| 380 const Operator* DeleteProperty(LanguageMode language_mode); | 412 const Operator* DeleteProperty(LanguageMode language_mode); |
| 381 | 413 |
| 382 const Operator* HasProperty(); | 414 const Operator* HasProperty(); |
| 383 | 415 |
| 384 const Operator* LoadContext(size_t depth, size_t index, bool immutable); | 416 const Operator* LoadContext(size_t depth, size_t index, bool immutable); |
| 385 const Operator* StoreContext(size_t depth, size_t index); | 417 const Operator* StoreContext(size_t depth, size_t index); |
| 386 | 418 |
| 387 const Operator* LoadDynamicGlobal(const Handle<String>& name, | 419 const Operator* LoadDynamicGlobal(const Handle<String>& name, |
| 388 uint32_t check_bitset, | 420 uint32_t check_bitset, |
| (...skipping 28 matching lines...) Expand all Loading... |
| 417 Zone* const zone_; | 449 Zone* const zone_; |
| 418 | 450 |
| 419 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); | 451 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); |
| 420 }; | 452 }; |
| 421 | 453 |
| 422 } // namespace compiler | 454 } // namespace compiler |
| 423 } // namespace internal | 455 } // namespace internal |
| 424 } // namespace v8 | 456 } // namespace v8 |
| 425 | 457 |
| 426 #endif // V8_COMPILER_JS_OPERATOR_H_ | 458 #endif // V8_COMPILER_JS_OPERATOR_H_ |
| OLD | NEW |