Index: src/compiler/js-operator.cc |
diff --git a/src/compiler/js-operator.cc b/src/compiler/js-operator.cc |
index c486e02855d6f733e3012c7923c450116eff8268..6a9f0926dce9b5964b23799f563aca0d78a69ce8 100644 |
--- a/src/compiler/js-operator.cc |
+++ b/src/compiler/js-operator.cc |
@@ -391,6 +391,28 @@ const StorePropertyParameters& StorePropertyParametersOf(const Operator* op) { |
} |
+bool operator==(CreateArgumentsParameters const& lhs, |
+ CreateArgumentsParameters const& rhs) { |
+ return lhs.type() == rhs.type() && lhs.start_index() == rhs.start_index(); |
+} |
+ |
+ |
+bool operator!=(CreateArgumentsParameters const& lhs, |
+ CreateArgumentsParameters const& rhs) { |
+ return !(lhs == rhs); |
+} |
+ |
+ |
+size_t hash_value(CreateArgumentsParameters const& p) { |
+ return base::hash_combine(p.type(), p.start_index()); |
+} |
+ |
+ |
+std::ostream& operator<<(std::ostream& os, CreateArgumentsParameters const& p) { |
+ return os << p.type() << ", " << p.start_index(); |
+} |
+ |
+ |
bool operator==(CreateClosureParameters const& lhs, |
CreateClosureParameters const& rhs) { |
return lhs.pretenure() == rhs.pretenure() && |
@@ -705,6 +727,18 @@ const Operator* JSOperatorBuilder::LoadDynamicContext( |
} |
+const Operator* JSOperatorBuilder::CreateArguments( |
+ CreateArgumentsParameters::Type type, int start_index) { |
+ DCHECK(start_index == 0 || type == CreateArgumentsParameters::REST_ARRAY); |
Benedikt Meurer
2015/09/15 04:35:50
How about DCHECK_IMPLIES(start_index != 0, type ==
Michael Starzinger
2015/09/15 07:39:27
Done.
|
+ CreateArgumentsParameters parameters(type, start_index); |
+ return new (zone()) Operator1<CreateArgumentsParameters>( // -- |
+ IrOpcode::kJSCreateArguments, Operator::kNoThrow, // opcode |
+ "JSCreateArguments", // name |
+ 1, 1, 1, 1, 1, 0, // counts |
+ parameters); // parameter |
+} |
+ |
+ |
const Operator* JSOperatorBuilder::CreateClosure( |
Handle<SharedFunctionInfo> shared_info, PretenureFlag pretenure) { |
CreateClosureParameters parameters(shared_info, pretenure); |