| 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 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 | 220 |
| 221 bool operator==(DynamicContextAccess const&, DynamicContextAccess const&); | 221 bool operator==(DynamicContextAccess const&, DynamicContextAccess const&); |
| 222 bool operator!=(DynamicContextAccess const&, DynamicContextAccess const&); | 222 bool operator!=(DynamicContextAccess const&, DynamicContextAccess const&); |
| 223 | 223 |
| 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 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 ContextualMode contextual_mode) | 234 ContextualMode contextual_mode) |
| 235 : name_(name), feedback_(feedback), contextual_mode_(contextual_mode) {} | 235 : name_(name), feedback_(feedback), contextual_mode_(contextual_mode) {} |
| 236 | 236 |
| 237 const Unique<Name>& name() const { return name_; } | 237 const Unique<Name>& name() const { return name_; } |
| 238 ContextualMode contextual_mode() const { return contextual_mode_; } | 238 ContextualMode contextual_mode() const { return contextual_mode_; } |
| 239 | 239 |
| 240 const VectorSlotPair& feedback() const { return feedback_; } | 240 const VectorSlotPair& feedback() const { return feedback_; } |
| 241 | 241 |
| 242 private: | 242 private: |
| 243 const Unique<Name> name_; | 243 const Unique<Name> name_; |
| 244 const VectorSlotPair feedback_; | 244 const VectorSlotPair feedback_; |
| 245 const ContextualMode contextual_mode_; | 245 const ContextualMode contextual_mode_; |
| 246 }; | 246 }; |
| 247 | 247 |
| 248 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); | 248 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); |
| 249 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); | 249 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); |
| 250 | 250 |
| 251 size_t hash_value(LoadNamedParameters const&); | 251 size_t hash_value(LoadNamedParameters const&); |
| 252 | 252 |
| 253 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); | 253 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); |
| 254 | 254 |
| 255 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); | 255 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); |
| 256 | 256 |
| 257 const LoadNamedParameters& LoadGlobalParametersOf(const Operator* op); |
| 258 |
| 257 | 259 |
| 258 // Defines the property being loaded from an object. This is | 260 // Defines the property being loaded from an object. This is |
| 259 // used as a parameter by JSLoadProperty operators. | 261 // used as a parameter by JSLoadProperty operators. |
| 260 class LoadPropertyParameters final { | 262 class LoadPropertyParameters final { |
| 261 public: | 263 public: |
| 262 explicit LoadPropertyParameters(const VectorSlotPair& feedback) | 264 explicit LoadPropertyParameters(const VectorSlotPair& feedback) |
| 263 : feedback_(feedback) {} | 265 : feedback_(feedback) {} |
| 264 | 266 |
| 265 const VectorSlotPair& feedback() const { return feedback_; } | 267 const VectorSlotPair& feedback() const { return feedback_; } |
| 266 | 268 |
| 267 private: | 269 private: |
| 268 const VectorSlotPair feedback_; | 270 const VectorSlotPair feedback_; |
| 269 }; | 271 }; |
| 270 | 272 |
| 271 bool operator==(LoadPropertyParameters const&, LoadPropertyParameters const&); | 273 bool operator==(LoadPropertyParameters const&, LoadPropertyParameters const&); |
| 272 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); | 274 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); |
| 273 | 275 |
| 274 size_t hash_value(LoadPropertyParameters const&); | 276 size_t hash_value(LoadPropertyParameters const&); |
| 275 | 277 |
| 276 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); | 278 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); |
| 277 | 279 |
| 278 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); | 280 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); |
| 279 | 281 |
| 280 | 282 |
| 281 // Defines the property being stored to an object by a named store. This is | 283 // Defines the property being stored to an object by a named store. This is |
| 282 // used as a parameter by JSStoreNamed operators. | 284 // used as a parameter by JSStoreNamed and JSStoreGlobal operators. |
| 283 class StoreNamedParameters final { | 285 class StoreNamedParameters final { |
| 284 public: | 286 public: |
| 285 StoreNamedParameters(LanguageMode language_mode, | 287 StoreNamedParameters(LanguageMode language_mode, |
| 286 const VectorSlotPair& feedback, const Unique<Name>& name) | 288 const VectorSlotPair& feedback, const Unique<Name>& name) |
| 287 : language_mode_(language_mode), name_(name), feedback_(feedback) {} | 289 : language_mode_(language_mode), name_(name), feedback_(feedback) {} |
| 288 | 290 |
| 289 LanguageMode language_mode() const { return language_mode_; } | 291 LanguageMode language_mode() const { return language_mode_; } |
| 290 const VectorSlotPair& feedback() const { return feedback_; } | 292 const VectorSlotPair& feedback() const { return feedback_; } |
| 291 const Unique<Name>& name() const { return name_; } | 293 const Unique<Name>& name() const { return name_; } |
| 292 | 294 |
| 293 private: | 295 private: |
| 294 const LanguageMode language_mode_; | 296 const LanguageMode language_mode_; |
| 295 const Unique<Name> name_; | 297 const Unique<Name> name_; |
| 296 const VectorSlotPair feedback_; | 298 const VectorSlotPair feedback_; |
| 297 }; | 299 }; |
| 298 | 300 |
| 299 bool operator==(StoreNamedParameters const&, StoreNamedParameters const&); | 301 bool operator==(StoreNamedParameters const&, StoreNamedParameters const&); |
| 300 bool operator!=(StoreNamedParameters const&, StoreNamedParameters const&); | 302 bool operator!=(StoreNamedParameters const&, StoreNamedParameters const&); |
| 301 | 303 |
| 302 size_t hash_value(StoreNamedParameters const&); | 304 size_t hash_value(StoreNamedParameters const&); |
| 303 | 305 |
| 304 std::ostream& operator<<(std::ostream&, StoreNamedParameters const&); | 306 std::ostream& operator<<(std::ostream&, StoreNamedParameters const&); |
| 305 | 307 |
| 306 const StoreNamedParameters& StoreNamedParametersOf(const Operator* op); | 308 const StoreNamedParameters& StoreNamedParametersOf(const Operator* op); |
| 307 | 309 |
| 310 const StoreNamedParameters& StoreGlobalParametersOf(const Operator* op); |
| 311 |
| 308 | 312 |
| 309 // Defines the property being stored to an object. This is used as a parameter | 313 // Defines the property being stored to an object. This is used as a parameter |
| 310 // by JSStoreProperty operators. | 314 // by JSStoreProperty operators. |
| 311 class StorePropertyParameters final { | 315 class StorePropertyParameters final { |
| 312 public: | 316 public: |
| 313 StorePropertyParameters(LanguageMode language_mode, | 317 StorePropertyParameters(LanguageMode language_mode, |
| 314 const VectorSlotPair& feedback) | 318 const VectorSlotPair& feedback) |
| 315 : language_mode_(language_mode), feedback_(feedback) {} | 319 : language_mode_(language_mode), feedback_(feedback) {} |
| 316 | 320 |
| 317 LanguageMode language_mode() const { return language_mode_; } | 321 LanguageMode language_mode() const { return language_mode_; } |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 | 405 |
| 402 const Operator* CallFunction( | 406 const Operator* CallFunction( |
| 403 size_t arity, CallFunctionFlags flags, LanguageMode language_mode, | 407 size_t arity, CallFunctionFlags flags, LanguageMode language_mode, |
| 404 VectorSlotPair const& feedback = VectorSlotPair()); | 408 VectorSlotPair const& feedback = VectorSlotPair()); |
| 405 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); | 409 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); |
| 406 | 410 |
| 407 const Operator* CallConstruct(int arguments); | 411 const Operator* CallConstruct(int arguments); |
| 408 | 412 |
| 409 const Operator* LoadProperty(const VectorSlotPair& feedback); | 413 const Operator* LoadProperty(const VectorSlotPair& feedback); |
| 410 const Operator* LoadNamed(const Unique<Name>& name, | 414 const Operator* LoadNamed(const Unique<Name>& name, |
| 411 const VectorSlotPair& feedback, | 415 const VectorSlotPair& feedback); |
| 412 ContextualMode contextual_mode = NOT_CONTEXTUAL); | |
| 413 | 416 |
| 414 const Operator* StoreProperty(LanguageMode language_mode, | 417 const Operator* StoreProperty(LanguageMode language_mode, |
| 415 const VectorSlotPair& feedback); | 418 const VectorSlotPair& feedback); |
| 416 const Operator* StoreNamed(LanguageMode language_mode, | 419 const Operator* StoreNamed(LanguageMode language_mode, |
| 417 const Unique<Name>& name, | 420 const Unique<Name>& name, |
| 418 const VectorSlotPair& feedback); | 421 const VectorSlotPair& feedback); |
| 419 | 422 |
| 420 const Operator* DeleteProperty(LanguageMode language_mode); | 423 const Operator* DeleteProperty(LanguageMode language_mode); |
| 421 | 424 |
| 422 const Operator* HasProperty(); | 425 const Operator* HasProperty(); |
| 423 | 426 |
| 427 const Operator* LoadGlobal(const Unique<Name>& name, |
| 428 const VectorSlotPair& feedback, |
| 429 ContextualMode contextual_mode = NOT_CONTEXTUAL); |
| 430 const Operator* StoreGlobal(LanguageMode language_mode, |
| 431 const Unique<Name>& name, |
| 432 const VectorSlotPair& feedback); |
| 433 |
| 424 const Operator* LoadContext(size_t depth, size_t index, bool immutable); | 434 const Operator* LoadContext(size_t depth, size_t index, bool immutable); |
| 425 const Operator* StoreContext(size_t depth, size_t index); | 435 const Operator* StoreContext(size_t depth, size_t index); |
| 426 | 436 |
| 427 const Operator* LoadDynamicGlobal(const Handle<String>& name, | 437 const Operator* LoadDynamicGlobal(const Handle<String>& name, |
| 428 uint32_t check_bitset, | 438 uint32_t check_bitset, |
| 429 const VectorSlotPair& feedback, | 439 const VectorSlotPair& feedback, |
| 430 ContextualMode mode); | 440 ContextualMode mode); |
| 431 const Operator* LoadDynamicContext(const Handle<String>& name, | 441 const Operator* LoadDynamicContext(const Handle<String>& name, |
| 432 uint32_t check_bitset, size_t depth, | 442 uint32_t check_bitset, size_t depth, |
| 433 size_t index); | 443 size_t index); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 457 Zone* const zone_; | 467 Zone* const zone_; |
| 458 | 468 |
| 459 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); | 469 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); |
| 460 }; | 470 }; |
| 461 | 471 |
| 462 } // namespace compiler | 472 } // namespace compiler |
| 463 } // namespace internal | 473 } // namespace internal |
| 464 } // namespace v8 | 474 } // namespace v8 |
| 465 | 475 |
| 466 #endif // V8_COMPILER_JS_OPERATOR_H_ | 476 #endif // V8_COMPILER_JS_OPERATOR_H_ |
| OLD | NEW |