Index: src/compiler/common-operator.cc |
diff --git a/src/compiler/common-operator.cc b/src/compiler/common-operator.cc |
index bacaae980f918eddf24abbca60e2f16657a6a499..a9d6d02cbc41cf73992746cc8ab57d4dd20b2d0b 100644 |
--- a/src/compiler/common-operator.cc |
+++ b/src/compiler/common-operator.cc |
@@ -738,6 +738,29 @@ const Operator* CommonOperatorBuilder::TailCall( |
} |
+const Operator* CommonOperatorBuilder::CallVarArgs( |
+ const CallDescriptor* descriptor) { |
+ class CallOperator final : public Operator1<const CallDescriptor*> { |
+ public: |
+ explicit CallOperator(const CallDescriptor* descriptor) |
+ : Operator1<const CallDescriptor*>( |
+ IrOpcode::kCallVarArgs, descriptor->properties(), "CallVarArgs", |
+ descriptor->InputCount() + descriptor->VarArgsInputCount() + |
+ descriptor->FrameStateCount(), |
+ Operator::ZeroIfPure(descriptor->properties()), |
+ Operator::ZeroIfEliminatable(descriptor->properties()), |
+ descriptor->ReturnCount(), |
+ Operator::ZeroIfPure(descriptor->properties()), |
+ Operator::ZeroIfNoThrow(descriptor->properties()), descriptor) {} |
+ |
+ void PrintParameter(std::ostream& os) const override { |
+ os << "[" << *parameter() << "]"; |
+ } |
+ }; |
+ return new (zone()) CallOperator(descriptor); |
+} |
+ |
+ |
const Operator* CommonOperatorBuilder::Projection(size_t index) { |
switch (index) { |
#define CACHED_PROJECTION(index) \ |