Index: src/compiler/js-operator.h |
diff --git a/src/compiler/js-operator.h b/src/compiler/js-operator.h |
index d70c8e2096186a4dc8577985d2cf74d4858a3851..3f00b475f131d14cec44c0acbd0f4b5e72b43517 100644 |
--- a/src/compiler/js-operator.h |
+++ b/src/compiler/js-operator.h |
@@ -233,7 +233,7 @@ DynamicContextAccess const& DynamicContextAccessOf(Operator const*); |
// Defines the property being loaded from an object by a named load. This is |
-// used as a parameter by JSLoadNamed and JSLoadGlobal operators. |
+// used as a parameter by JSLoadNamed operators. |
class LoadNamedParameters final { |
public: |
LoadNamedParameters(const Unique<Name>& name, const VectorSlotPair& feedback, |
@@ -266,7 +266,74 @@ std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); |
const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); |
-const LoadNamedParameters& LoadGlobalParametersOf(const Operator* op); |
+ |
+// Defines the property being loaded from an object by a named load. This is |
+// used as a parameter by JSLoadGlobal operator. |
+class LoadGlobalParameters final { |
+ public: |
+ LoadGlobalParameters(const Unique<Name>& name, const VectorSlotPair& feedback, |
+ ContextualMode contextual_mode, int slot_index) |
+ : name_(name), |
+ feedback_(feedback), |
+ contextual_mode_(contextual_mode), |
+ slot_index_(slot_index) {} |
+ |
+ const Unique<Name>& name() const { return name_; } |
+ ContextualMode contextual_mode() const { return contextual_mode_; } |
+ |
+ const VectorSlotPair& feedback() const { return feedback_; } |
+ |
+ const int slot_index() const { return slot_index_; } |
+ |
+ private: |
+ const Unique<Name> name_; |
+ const VectorSlotPair feedback_; |
+ const ContextualMode contextual_mode_; |
+ const int slot_index_; |
+}; |
+ |
+bool operator==(LoadGlobalParameters const&, LoadGlobalParameters const&); |
+bool operator!=(LoadGlobalParameters const&, LoadGlobalParameters const&); |
+ |
+size_t hash_value(LoadGlobalParameters const&); |
+ |
+std::ostream& operator<<(std::ostream&, LoadGlobalParameters const&); |
+ |
+const LoadGlobalParameters& LoadGlobalParametersOf(const Operator* op); |
+ |
+ |
+// Defines the property being stored to an object by a named store. This is |
+// used as a parameter by JSStoreGlobal operator. |
+class StoreGlobalParameters final { |
+ public: |
+ StoreGlobalParameters(LanguageMode language_mode, |
+ const VectorSlotPair& feedback, |
+ const Unique<Name>& name, int slot_index) |
+ : language_mode_(language_mode), |
+ name_(name), |
+ feedback_(feedback), |
+ slot_index_(slot_index) {} |
+ |
+ LanguageMode language_mode() const { return language_mode_; } |
+ const VectorSlotPair& feedback() const { return feedback_; } |
+ const Unique<Name>& name() const { return name_; } |
+ int slot_index() const { return slot_index_; } |
+ |
+ private: |
+ const LanguageMode language_mode_; |
+ const Unique<Name> name_; |
+ const VectorSlotPair feedback_; |
+ int slot_index_; |
+}; |
+ |
+bool operator==(StoreGlobalParameters const&, StoreGlobalParameters const&); |
+bool operator!=(StoreGlobalParameters const&, StoreGlobalParameters const&); |
+ |
+size_t hash_value(StoreGlobalParameters const&); |
+ |
+std::ostream& operator<<(std::ostream&, StoreGlobalParameters const&); |
+ |
+const StoreGlobalParameters& StoreGlobalParametersOf(const Operator* op); |
// Defines the property being loaded from an object. This is |
@@ -297,7 +364,7 @@ const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); |
// Defines the property being stored to an object by a named store. This is |
-// used as a parameter by JSStoreNamed and JSStoreGlobal operators. |
+// used as a parameter by JSStoreNamed operator. |
class StoreNamedParameters final { |
public: |
StoreNamedParameters(LanguageMode language_mode, |
@@ -323,8 +390,6 @@ std::ostream& operator<<(std::ostream&, StoreNamedParameters const&); |
const StoreNamedParameters& StoreNamedParametersOf(const Operator* op); |
-const StoreNamedParameters& StoreGlobalParametersOf(const Operator* op); |
- |
// Defines the property being stored to an object. This is used as a parameter |
// by JSStoreProperty operators. |
@@ -445,10 +510,12 @@ class JSOperatorBuilder final : public ZoneObject { |
const Operator* LoadGlobal(const Unique<Name>& name, |
const VectorSlotPair& feedback, |
- ContextualMode contextual_mode = NOT_CONTEXTUAL); |
+ ContextualMode contextual_mode = NOT_CONTEXTUAL, |
+ int slot_index = -1); |
const Operator* StoreGlobal(LanguageMode language_mode, |
const Unique<Name>& name, |
- const VectorSlotPair& feedback); |
+ const VectorSlotPair& feedback, |
+ int slot_index = -1); |
const Operator* LoadContext(size_t depth, size_t index, bool immutable); |
const Operator* StoreContext(size_t depth, size_t index); |