| 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 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 | 226 |
| 227 bool operator==(DynamicContextAccess const&, DynamicContextAccess const&); | 227 bool operator==(DynamicContextAccess const&, DynamicContextAccess const&); |
| 228 bool operator!=(DynamicContextAccess const&, DynamicContextAccess const&); | 228 bool operator!=(DynamicContextAccess const&, DynamicContextAccess const&); |
| 229 | 229 |
| 230 std::ostream& operator<<(std::ostream&, DynamicContextAccess const&); | 230 std::ostream& operator<<(std::ostream&, DynamicContextAccess const&); |
| 231 | 231 |
| 232 DynamicContextAccess const& DynamicContextAccessOf(Operator const*); | 232 DynamicContextAccess const& DynamicContextAccessOf(Operator const*); |
| 233 | 233 |
| 234 | 234 |
| 235 // Defines the property being loaded from an object by a named load. This is | 235 // Defines the property being loaded from an object by a named load. This is |
| 236 // used as a parameter by JSLoadNamed and JSLoadGlobal operators. | 236 // used as a parameter by JSLoadNamed operators. |
| 237 class LoadNamedParameters final { | 237 class LoadNamedParameters final { |
| 238 public: | 238 public: |
| 239 LoadNamedParameters(const Unique<Name>& name, const VectorSlotPair& feedback, | 239 LoadNamedParameters(const Unique<Name>& name, const VectorSlotPair& feedback, |
| 240 LanguageMode language_mode, | 240 LanguageMode language_mode, |
| 241 ContextualMode contextual_mode) | 241 ContextualMode contextual_mode) |
| 242 : name_(name), | 242 : name_(name), |
| 243 feedback_(feedback), | 243 feedback_(feedback), |
| 244 language_mode_(language_mode), | 244 language_mode_(language_mode), |
| 245 contextual_mode_(contextual_mode) {} | 245 contextual_mode_(contextual_mode) {} |
| 246 | 246 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 259 | 259 |
| 260 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); | 260 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); |
| 261 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); | 261 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); |
| 262 | 262 |
| 263 size_t hash_value(LoadNamedParameters const&); | 263 size_t hash_value(LoadNamedParameters const&); |
| 264 | 264 |
| 265 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); | 265 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); |
| 266 | 266 |
| 267 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); | 267 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); |
| 268 | 268 |
| 269 const LoadNamedParameters& LoadGlobalParametersOf(const Operator* op); | 269 |
| 270 // Defines the property being loaded from an object by a named load. This is |
| 271 // used as a parameter by JSLoadGlobal operator. |
| 272 class LoadGlobalParameters final { |
| 273 public: |
| 274 LoadGlobalParameters(const Unique<Name>& name, const VectorSlotPair& feedback, |
| 275 ContextualMode contextual_mode, int slot_index) |
| 276 : name_(name), |
| 277 feedback_(feedback), |
| 278 contextual_mode_(contextual_mode), |
| 279 slot_index_(slot_index) {} |
| 280 |
| 281 const Unique<Name>& name() const { return name_; } |
| 282 ContextualMode contextual_mode() const { return contextual_mode_; } |
| 283 |
| 284 const VectorSlotPair& feedback() const { return feedback_; } |
| 285 |
| 286 const int slot_index() const { return slot_index_; } |
| 287 |
| 288 private: |
| 289 const Unique<Name> name_; |
| 290 const VectorSlotPair feedback_; |
| 291 const ContextualMode contextual_mode_; |
| 292 const int slot_index_; |
| 293 }; |
| 294 |
| 295 bool operator==(LoadGlobalParameters const&, LoadGlobalParameters const&); |
| 296 bool operator!=(LoadGlobalParameters const&, LoadGlobalParameters const&); |
| 297 |
| 298 size_t hash_value(LoadGlobalParameters const&); |
| 299 |
| 300 std::ostream& operator<<(std::ostream&, LoadGlobalParameters const&); |
| 301 |
| 302 const LoadGlobalParameters& LoadGlobalParametersOf(const Operator* op); |
| 303 |
| 304 |
| 305 // Defines the property being stored to an object by a named store. This is |
| 306 // used as a parameter by JSStoreGlobal operator. |
| 307 class StoreGlobalParameters final { |
| 308 public: |
| 309 StoreGlobalParameters(LanguageMode language_mode, |
| 310 const VectorSlotPair& feedback, |
| 311 const Unique<Name>& name, int slot_index) |
| 312 : language_mode_(language_mode), |
| 313 name_(name), |
| 314 feedback_(feedback), |
| 315 slot_index_(slot_index) {} |
| 316 |
| 317 LanguageMode language_mode() const { return language_mode_; } |
| 318 const VectorSlotPair& feedback() const { return feedback_; } |
| 319 const Unique<Name>& name() const { return name_; } |
| 320 int slot_index() const { return slot_index_; } |
| 321 |
| 322 private: |
| 323 const LanguageMode language_mode_; |
| 324 const Unique<Name> name_; |
| 325 const VectorSlotPair feedback_; |
| 326 int slot_index_; |
| 327 }; |
| 328 |
| 329 bool operator==(StoreGlobalParameters const&, StoreGlobalParameters const&); |
| 330 bool operator!=(StoreGlobalParameters const&, StoreGlobalParameters const&); |
| 331 |
| 332 size_t hash_value(StoreGlobalParameters const&); |
| 333 |
| 334 std::ostream& operator<<(std::ostream&, StoreGlobalParameters const&); |
| 335 |
| 336 const StoreGlobalParameters& StoreGlobalParametersOf(const Operator* op); |
| 270 | 337 |
| 271 | 338 |
| 272 // Defines the property being loaded from an object. This is | 339 // Defines the property being loaded from an object. This is |
| 273 // used as a parameter by JSLoadProperty operators. | 340 // used as a parameter by JSLoadProperty operators. |
| 274 class LoadPropertyParameters final { | 341 class LoadPropertyParameters final { |
| 275 public: | 342 public: |
| 276 explicit LoadPropertyParameters(const VectorSlotPair& feedback, | 343 explicit LoadPropertyParameters(const VectorSlotPair& feedback, |
| 277 LanguageMode language_mode) | 344 LanguageMode language_mode) |
| 278 : feedback_(feedback), language_mode_(language_mode) {} | 345 : feedback_(feedback), language_mode_(language_mode) {} |
| 279 | 346 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 290 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); | 357 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); |
| 291 | 358 |
| 292 size_t hash_value(LoadPropertyParameters const&); | 359 size_t hash_value(LoadPropertyParameters const&); |
| 293 | 360 |
| 294 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); | 361 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); |
| 295 | 362 |
| 296 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); | 363 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); |
| 297 | 364 |
| 298 | 365 |
| 299 // Defines the property being stored to an object by a named store. This is | 366 // Defines the property being stored to an object by a named store. This is |
| 300 // used as a parameter by JSStoreNamed and JSStoreGlobal operators. | 367 // used as a parameter by JSStoreNamed operator. |
| 301 class StoreNamedParameters final { | 368 class StoreNamedParameters final { |
| 302 public: | 369 public: |
| 303 StoreNamedParameters(LanguageMode language_mode, | 370 StoreNamedParameters(LanguageMode language_mode, |
| 304 const VectorSlotPair& feedback, const Unique<Name>& name) | 371 const VectorSlotPair& feedback, const Unique<Name>& name) |
| 305 : language_mode_(language_mode), name_(name), feedback_(feedback) {} | 372 : language_mode_(language_mode), name_(name), feedback_(feedback) {} |
| 306 | 373 |
| 307 LanguageMode language_mode() const { return language_mode_; } | 374 LanguageMode language_mode() const { return language_mode_; } |
| 308 const VectorSlotPair& feedback() const { return feedback_; } | 375 const VectorSlotPair& feedback() const { return feedback_; } |
| 309 const Unique<Name>& name() const { return name_; } | 376 const Unique<Name>& name() const { return name_; } |
| 310 | 377 |
| 311 private: | 378 private: |
| 312 const LanguageMode language_mode_; | 379 const LanguageMode language_mode_; |
| 313 const Unique<Name> name_; | 380 const Unique<Name> name_; |
| 314 const VectorSlotPair feedback_; | 381 const VectorSlotPair feedback_; |
| 315 }; | 382 }; |
| 316 | 383 |
| 317 bool operator==(StoreNamedParameters const&, StoreNamedParameters const&); | 384 bool operator==(StoreNamedParameters const&, StoreNamedParameters const&); |
| 318 bool operator!=(StoreNamedParameters const&, StoreNamedParameters const&); | 385 bool operator!=(StoreNamedParameters const&, StoreNamedParameters const&); |
| 319 | 386 |
| 320 size_t hash_value(StoreNamedParameters const&); | 387 size_t hash_value(StoreNamedParameters const&); |
| 321 | 388 |
| 322 std::ostream& operator<<(std::ostream&, StoreNamedParameters const&); | 389 std::ostream& operator<<(std::ostream&, StoreNamedParameters const&); |
| 323 | 390 |
| 324 const StoreNamedParameters& StoreNamedParametersOf(const Operator* op); | 391 const StoreNamedParameters& StoreNamedParametersOf(const Operator* op); |
| 325 | 392 |
| 326 const StoreNamedParameters& StoreGlobalParametersOf(const Operator* op); | |
| 327 | |
| 328 | 393 |
| 329 // Defines the property being stored to an object. This is used as a parameter | 394 // Defines the property being stored to an object. This is used as a parameter |
| 330 // by JSStoreProperty operators. | 395 // by JSStoreProperty operators. |
| 331 class StorePropertyParameters final { | 396 class StorePropertyParameters final { |
| 332 public: | 397 public: |
| 333 StorePropertyParameters(LanguageMode language_mode, | 398 StorePropertyParameters(LanguageMode language_mode, |
| 334 const VectorSlotPair& feedback) | 399 const VectorSlotPair& feedback) |
| 335 : language_mode_(language_mode), feedback_(feedback) {} | 400 : language_mode_(language_mode), feedback_(feedback) {} |
| 336 | 401 |
| 337 LanguageMode language_mode() const { return language_mode_; } | 402 LanguageMode language_mode() const { return language_mode_; } |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 438 const Operator* StoreNamed(LanguageMode language_mode, | 503 const Operator* StoreNamed(LanguageMode language_mode, |
| 439 const Unique<Name>& name, | 504 const Unique<Name>& name, |
| 440 const VectorSlotPair& feedback); | 505 const VectorSlotPair& feedback); |
| 441 | 506 |
| 442 const Operator* DeleteProperty(LanguageMode language_mode); | 507 const Operator* DeleteProperty(LanguageMode language_mode); |
| 443 | 508 |
| 444 const Operator* HasProperty(); | 509 const Operator* HasProperty(); |
| 445 | 510 |
| 446 const Operator* LoadGlobal(const Unique<Name>& name, | 511 const Operator* LoadGlobal(const Unique<Name>& name, |
| 447 const VectorSlotPair& feedback, | 512 const VectorSlotPair& feedback, |
| 448 ContextualMode contextual_mode = NOT_CONTEXTUAL); | 513 ContextualMode contextual_mode = NOT_CONTEXTUAL, |
| 514 int slot_index = -1); |
| 449 const Operator* StoreGlobal(LanguageMode language_mode, | 515 const Operator* StoreGlobal(LanguageMode language_mode, |
| 450 const Unique<Name>& name, | 516 const Unique<Name>& name, |
| 451 const VectorSlotPair& feedback); | 517 const VectorSlotPair& feedback, |
| 518 int slot_index = -1); |
| 452 | 519 |
| 453 const Operator* LoadContext(size_t depth, size_t index, bool immutable); | 520 const Operator* LoadContext(size_t depth, size_t index, bool immutable); |
| 454 const Operator* StoreContext(size_t depth, size_t index); | 521 const Operator* StoreContext(size_t depth, size_t index); |
| 455 | 522 |
| 456 const Operator* LoadDynamicGlobal(const Handle<String>& name, | 523 const Operator* LoadDynamicGlobal(const Handle<String>& name, |
| 457 uint32_t check_bitset, | 524 uint32_t check_bitset, |
| 458 const VectorSlotPair& feedback, | 525 const VectorSlotPair& feedback, |
| 459 ContextualMode mode); | 526 ContextualMode mode); |
| 460 const Operator* LoadDynamicContext(const Handle<String>& name, | 527 const Operator* LoadDynamicContext(const Handle<String>& name, |
| 461 uint32_t check_bitset, size_t depth, | 528 uint32_t check_bitset, size_t depth, |
| (...skipping 24 matching lines...) Expand all Loading... |
| 486 Zone* const zone_; | 553 Zone* const zone_; |
| 487 | 554 |
| 488 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); | 555 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); |
| 489 }; | 556 }; |
| 490 | 557 |
| 491 } // namespace compiler | 558 } // namespace compiler |
| 492 } // namespace internal | 559 } // namespace internal |
| 493 } // namespace v8 | 560 } // namespace v8 |
| 494 | 561 |
| 495 #endif // V8_COMPILER_JS_OPERATOR_H_ | 562 #endif // V8_COMPILER_JS_OPERATOR_H_ |
| OLD | NEW |