Index: src/compiler/js-operator.cc |
diff --git a/src/compiler/js-operator.cc b/src/compiler/js-operator.cc |
index 5860c925a124c2ad5cb1bcd642ef7183d4ad0c9a..f1ca84b3646c535fd0cf4c29a60de2b8e1478b89 100644 |
--- a/src/compiler/js-operator.cc |
+++ b/src/compiler/js-operator.cc |
@@ -205,66 +205,64 @@ DynamicContextAccess const& DynamicContextAccessOf(Operator const* op) { |
} |
-bool operator==(LoadNamedParameters const& lhs, |
- LoadNamedParameters const& rhs) { |
+bool operator==(NamedAccess const& lhs, NamedAccess const& rhs) { |
return lhs.name().location() == rhs.name().location() && |
lhs.language_mode() == rhs.language_mode() && |
lhs.feedback() == rhs.feedback(); |
} |
-bool operator!=(LoadNamedParameters const& lhs, |
- LoadNamedParameters const& rhs) { |
+bool operator!=(NamedAccess const& lhs, NamedAccess const& rhs) { |
return !(lhs == rhs); |
} |
-size_t hash_value(LoadNamedParameters const& p) { |
+size_t hash_value(NamedAccess const& p) { |
return base::hash_combine(p.name().location(), p.language_mode(), |
p.feedback()); |
} |
-std::ostream& operator<<(std::ostream& os, LoadNamedParameters const& p) { |
+std::ostream& operator<<(std::ostream& os, NamedAccess const& p) { |
return os << Brief(*p.name()) << ", " << p.language_mode(); |
} |
-std::ostream& operator<<(std::ostream& os, LoadPropertyParameters const& p) { |
+NamedAccess const& NamedAccessOf(const Operator* op) { |
+ DCHECK(op->opcode() == IrOpcode::kJSLoadNamed || |
+ op->opcode() == IrOpcode::kJSStoreNamed); |
+ return OpParameter<NamedAccess>(op); |
+} |
+ |
+ |
+std::ostream& operator<<(std::ostream& os, PropertyAccess const& p) { |
return os << p.language_mode(); |
} |
-bool operator==(LoadPropertyParameters const& lhs, |
- LoadPropertyParameters const& rhs) { |
+bool operator==(PropertyAccess const& lhs, PropertyAccess const& rhs) { |
return lhs.language_mode() == rhs.language_mode() && |
lhs.feedback() == rhs.feedback(); |
} |
-bool operator!=(LoadPropertyParameters const& lhs, |
- LoadPropertyParameters const& rhs) { |
+bool operator!=(PropertyAccess const& lhs, PropertyAccess const& rhs) { |
return !(lhs == rhs); |
} |
-const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op) { |
- DCHECK_EQ(IrOpcode::kJSLoadProperty, op->opcode()); |
- return OpParameter<LoadPropertyParameters>(op); |
+PropertyAccess const& PropertyAccessOf(const Operator* op) { |
+ DCHECK(op->opcode() == IrOpcode::kJSLoadProperty || |
+ op->opcode() == IrOpcode::kJSStoreProperty); |
+ return OpParameter<PropertyAccess>(op); |
} |
-size_t hash_value(LoadPropertyParameters const& p) { |
+size_t hash_value(PropertyAccess const& p) { |
return base::hash_combine(p.language_mode(), p.feedback()); |
} |
-const LoadNamedParameters& LoadNamedParametersOf(const Operator* op) { |
- DCHECK_EQ(IrOpcode::kJSLoadNamed, op->opcode()); |
- return OpParameter<LoadNamedParameters>(op); |
-} |
- |
- |
bool operator==(LoadGlobalParameters const& lhs, |
LoadGlobalParameters const& rhs) { |
return lhs.name().location() == rhs.name().location() && |
@@ -331,66 +329,6 @@ const StoreGlobalParameters& StoreGlobalParametersOf(const Operator* op) { |
} |
-bool operator==(StoreNamedParameters const& lhs, |
- StoreNamedParameters const& rhs) { |
- return lhs.language_mode() == rhs.language_mode() && |
- lhs.name().location() == rhs.name().location() && |
- lhs.feedback() == rhs.feedback(); |
-} |
- |
- |
-bool operator!=(StoreNamedParameters const& lhs, |
- StoreNamedParameters const& rhs) { |
- return !(lhs == rhs); |
-} |
- |
- |
-size_t hash_value(StoreNamedParameters const& p) { |
- return base::hash_combine(p.language_mode(), p.name().location(), |
- p.feedback()); |
-} |
- |
- |
-std::ostream& operator<<(std::ostream& os, StoreNamedParameters const& p) { |
- return os << p.language_mode() << ", " << Brief(*p.name()); |
-} |
- |
- |
-const StoreNamedParameters& StoreNamedParametersOf(const Operator* op) { |
- DCHECK_EQ(IrOpcode::kJSStoreNamed, op->opcode()); |
- return OpParameter<StoreNamedParameters>(op); |
-} |
- |
- |
-bool operator==(StorePropertyParameters const& lhs, |
- StorePropertyParameters const& rhs) { |
- return lhs.language_mode() == rhs.language_mode() && |
- lhs.feedback() == rhs.feedback(); |
-} |
- |
- |
-bool operator!=(StorePropertyParameters const& lhs, |
- StorePropertyParameters const& rhs) { |
- return !(lhs == rhs); |
-} |
- |
- |
-size_t hash_value(StorePropertyParameters const& p) { |
- return base::hash_combine(p.language_mode(), p.feedback()); |
-} |
- |
- |
-std::ostream& operator<<(std::ostream& os, StorePropertyParameters const& p) { |
- return os << p.language_mode(); |
-} |
- |
- |
-const StorePropertyParameters& StorePropertyParametersOf(const Operator* op) { |
- DCHECK_EQ(IrOpcode::kJSStoreProperty, op->opcode()); |
- return OpParameter<StorePropertyParameters>(op); |
-} |
- |
- |
bool operator==(CreateArgumentsParameters const& lhs, |
CreateArgumentsParameters const& rhs) { |
return lhs.type() == rhs.type() && lhs.start_index() == rhs.start_index(); |
@@ -600,49 +538,49 @@ const Operator* JSOperatorBuilder::CallConstruct(int arguments) { |
} |
-const Operator* JSOperatorBuilder::LoadNamed(const Handle<Name>& name, |
- const VectorSlotPair& feedback, |
- LanguageMode language_mode) { |
- LoadNamedParameters parameters(name, feedback, language_mode); |
- return new (zone()) Operator1<LoadNamedParameters>( // -- |
+const Operator* JSOperatorBuilder::LoadNamed(LanguageMode language_mode, |
+ Handle<Name> name, |
+ const VectorSlotPair& feedback) { |
+ NamedAccess access(language_mode, name, feedback); |
+ return new (zone()) Operator1<NamedAccess>( // -- |
IrOpcode::kJSLoadNamed, Operator::kNoProperties, // opcode |
"JSLoadNamed", // name |
2, 1, 1, 1, 1, 2, // counts |
- parameters); // parameter |
+ access); // parameter |
} |
-const Operator* JSOperatorBuilder::LoadProperty(const VectorSlotPair& feedback, |
- LanguageMode language_mode) { |
- LoadPropertyParameters parameters(feedback, language_mode); |
- return new (zone()) Operator1<LoadPropertyParameters>( // -- |
+const Operator* JSOperatorBuilder::LoadProperty( |
+ LanguageMode language_mode, VectorSlotPair const& feedback) { |
+ PropertyAccess access(language_mode, feedback); |
+ return new (zone()) Operator1<PropertyAccess>( // -- |
IrOpcode::kJSLoadProperty, Operator::kNoProperties, // opcode |
"JSLoadProperty", // name |
3, 1, 1, 1, 1, 2, // counts |
- parameters); // parameter |
+ access); // parameter |
} |
const Operator* JSOperatorBuilder::StoreNamed(LanguageMode language_mode, |
- const Handle<Name>& name, |
- const VectorSlotPair& feedback) { |
- StoreNamedParameters parameters(language_mode, feedback, name); |
- return new (zone()) Operator1<StoreNamedParameters>( // -- |
+ Handle<Name> name, |
+ VectorSlotPair const& feedback) { |
+ NamedAccess access(language_mode, name, feedback); |
+ return new (zone()) Operator1<NamedAccess>( // -- |
IrOpcode::kJSStoreNamed, Operator::kNoProperties, // opcode |
"JSStoreNamed", // name |
3, 1, 1, 0, 1, 2, // counts |
- parameters); // parameter |
+ access); // parameter |
} |
const Operator* JSOperatorBuilder::StoreProperty( |
- LanguageMode language_mode, const VectorSlotPair& feedback) { |
- StorePropertyParameters parameters(language_mode, feedback); |
- return new (zone()) Operator1<StorePropertyParameters>( // -- |
+ LanguageMode language_mode, VectorSlotPair const& feedback) { |
+ PropertyAccess access(language_mode, feedback); |
+ return new (zone()) Operator1<PropertyAccess>( // -- |
IrOpcode::kJSStoreProperty, Operator::kNoProperties, // opcode |
"JSStoreProperty", // name |
4, 1, 1, 0, 1, 2, // counts |
- parameters); // parameter |
+ access); // parameter |
} |