| Index: src/compiler/js-operator.h
 | 
| diff --git a/src/compiler/js-operator.h b/src/compiler/js-operator.h
 | 
| index a9cfd6306e0fea11f415fdb2e44d3c09357bfd6b..5ac3b6769e3f7f0491967e7cde69e678273585a6 100644
 | 
| --- a/src/compiler/js-operator.h
 | 
| +++ b/src/compiler/js-operator.h
 | 
| @@ -90,6 +90,40 @@ ConvertReceiverMode ConvertReceiverModeOf(Operator const* op);
 | 
|  // The ToBooleanHints are used as parameter by JSToBoolean operators.
 | 
|  ToBooleanHints ToBooleanHintsOf(Operator const* op);
 | 
|  
 | 
| +// Defines the flags for a JavaScript call forwarding parameters. This
 | 
| +// is used as parameter by JSConstructForwardVarargs operators.
 | 
| +class ConstructForwardVarargsParameters final {
 | 
| + public:
 | 
| +  ConstructForwardVarargsParameters(size_t arity, uint32_t start_index)
 | 
| +      : bit_field_(ArityField::encode(arity) |
 | 
| +                   StartIndexField::encode(start_index)) {}
 | 
| +
 | 
| +  size_t arity() const { return ArityField::decode(bit_field_); }
 | 
| +  uint32_t start_index() const { return StartIndexField::decode(bit_field_); }
 | 
| +
 | 
| +  bool operator==(ConstructForwardVarargsParameters const& that) const {
 | 
| +    return this->bit_field_ == that.bit_field_;
 | 
| +  }
 | 
| +  bool operator!=(ConstructForwardVarargsParameters const& that) const {
 | 
| +    return !(*this == that);
 | 
| +  }
 | 
| +
 | 
| + private:
 | 
| +  friend size_t hash_value(ConstructForwardVarargsParameters const& p) {
 | 
| +    return p.bit_field_;
 | 
| +  }
 | 
| +
 | 
| +  typedef BitField<size_t, 0, 16> ArityField;
 | 
| +  typedef BitField<uint32_t, 16, 16> StartIndexField;
 | 
| +
 | 
| +  uint32_t const bit_field_;
 | 
| +};
 | 
| +
 | 
| +std::ostream& operator<<(std::ostream&,
 | 
| +                         ConstructForwardVarargsParameters const&);
 | 
| +
 | 
| +ConstructForwardVarargsParameters const& ConstructForwardVarargsParametersOf(
 | 
| +    Operator const*) WARN_UNUSED_RESULT;
 | 
|  
 | 
|  // Defines the arity and the feedback for a JavaScript constructor call. This is
 | 
|  // used as a parameter by JSConstruct operators.
 | 
| @@ -146,11 +180,13 @@ SpreadWithArityParameter const& SpreadWithArityParameterOf(Operator const*);
 | 
|  // is used as parameter by JSCallForwardVarargs operators.
 | 
|  class CallForwardVarargsParameters final {
 | 
|   public:
 | 
| -  CallForwardVarargsParameters(uint32_t start_index,
 | 
| +  CallForwardVarargsParameters(size_t arity, uint32_t start_index,
 | 
|                                 TailCallMode tail_call_mode)
 | 
| -      : bit_field_(StartIndexField::encode(start_index) |
 | 
| +      : bit_field_(ArityField::encode(arity) |
 | 
| +                   StartIndexField::encode(start_index) |
 | 
|                     TailCallModeField::encode(tail_call_mode)) {}
 | 
|  
 | 
| +  size_t arity() const { return ArityField::decode(bit_field_); }
 | 
|    uint32_t start_index() const { return StartIndexField::decode(bit_field_); }
 | 
|    TailCallMode tail_call_mode() const {
 | 
|      return TailCallModeField::decode(bit_field_);
 | 
| @@ -168,8 +204,9 @@ class CallForwardVarargsParameters final {
 | 
|      return p.bit_field_;
 | 
|    }
 | 
|  
 | 
| -  typedef BitField<uint32_t, 0, 30> StartIndexField;
 | 
| -  typedef BitField<TailCallMode, 31, 1> TailCallModeField;
 | 
| +  typedef BitField<size_t, 0, 15> ArityField;
 | 
| +  typedef BitField<uint32_t, 15, 15> StartIndexField;
 | 
| +  typedef BitField<TailCallMode, 30, 1> TailCallModeField;
 | 
|  
 | 
|    uint32_t const bit_field_;
 | 
|  };
 | 
| @@ -665,7 +702,7 @@ class V8_EXPORT_PRIVATE JSOperatorBuilder final
 | 
|    const Operator* CreateLiteralRegExp(Handle<String> constant_pattern,
 | 
|                                        int literal_flags, int literal_index);
 | 
|  
 | 
| -  const Operator* CallForwardVarargs(uint32_t start_index,
 | 
| +  const Operator* CallForwardVarargs(size_t arity, uint32_t start_index,
 | 
|                                       TailCallMode tail_call_mode);
 | 
|    const Operator* Call(
 | 
|        size_t arity, CallFrequency frequency = CallFrequency(),
 | 
| @@ -676,6 +713,8 @@ class V8_EXPORT_PRIVATE JSOperatorBuilder final
 | 
|    const Operator* CallRuntime(Runtime::FunctionId id);
 | 
|    const Operator* CallRuntime(Runtime::FunctionId id, size_t arity);
 | 
|    const Operator* CallRuntime(const Runtime::Function* function, size_t arity);
 | 
| +
 | 
| +  const Operator* ConstructForwardVarargs(size_t arity, uint32_t start_index);
 | 
|    const Operator* Construct(uint32_t arity,
 | 
|                              CallFrequency frequency = CallFrequency(),
 | 
|                              VectorSlotPair const& feedback = VectorSlotPair());
 | 
| 
 |