| Index: src/ast/ast.h | 
| diff --git a/src/ast/ast.h b/src/ast/ast.h | 
| index fa462f01d65fef171d6eb30954b03005b4ceddf2..b27b7ca0fed67cb922bea46a434d46b886053efd 100644 | 
| --- a/src/ast/ast.h | 
| +++ b/src/ast/ast.h | 
| @@ -2668,7 +2668,7 @@ class FunctionLiteral final : public Expression { | 
| FunctionType function_type() const { | 
| return FunctionTypeBits::decode(bit_field_); | 
| } | 
| -  FunctionKind kind() const { return FunctionKindBits::decode(bit_field_); } | 
| +  FunctionKind kind() const; | 
|  | 
| int ast_node_count() { return ast_properties_.node_count(); } | 
| AstProperties::Flags flags() const { return ast_properties_.flags(); } | 
| @@ -2680,10 +2680,10 @@ class FunctionLiteral final : public Expression { | 
| } | 
| bool dont_optimize() { return dont_optimize_reason() != kNoReason; } | 
| BailoutReason dont_optimize_reason() { | 
| -    return DontOptimizeReasonField::decode(bit_field_2_); | 
| +    return DontOptimizeReasonField::decode(bit_field_); | 
| } | 
| void set_dont_optimize_reason(BailoutReason reason) { | 
| -    bit_field_2_ = DontOptimizeReasonField::update(bit_field_2_, reason); | 
| +    bit_field_ = DontOptimizeReasonField::update(bit_field_, reason); | 
| } | 
|  | 
| bool IsAnonymousFunctionDefinition() const { | 
| @@ -2701,11 +2701,11 @@ class FunctionLiteral final : public Expression { | 
| RequiresClassFieldInit::update(bit_field_, requires_class_field_init); | 
| } | 
| bool is_class_field_initializer() { | 
| -    return IsClassFieldInitializer::decode(bit_field_2_); | 
| +    return IsClassFieldInitializer::decode(bit_field_); | 
| } | 
| void set_is_class_field_initializer(bool is_class_field_initializer) { | 
| -    bit_field_ = IsClassFieldInitializer::update(bit_field_2_, | 
| -                                                 is_class_field_initializer); | 
| +    bit_field_ = | 
| +        IsClassFieldInitializer::update(bit_field_, is_class_field_initializer); | 
| } | 
|  | 
| private: | 
| @@ -2717,8 +2717,8 @@ class FunctionLiteral final : public Expression { | 
| int expected_property_count, int parameter_count, | 
| FunctionType function_type, | 
| ParameterFlag has_duplicate_parameters, | 
| -                  EagerCompileHint eager_compile_hint, FunctionKind kind, | 
| -                  int position, bool is_function) | 
| +                  EagerCompileHint eager_compile_hint, int position, | 
| +                  bool is_function) | 
| : Expression(position, kFunctionLiteral), | 
| materialized_literal_count_(materialized_literal_count), | 
| expected_property_count_(expected_property_count), | 
| @@ -2736,13 +2736,10 @@ class FunctionLiteral final : public Expression { | 
| kHasDuplicateParameters) | | 
| IsFunction::encode(is_function) | | 
| ShouldEagerCompile::encode(eager_compile_hint == kShouldEagerCompile) | | 
| -        FunctionKindBits::encode(kind) | RequiresClassFieldInit::encode(false) | | 
| -        ShouldNotBeUsedOnceHintField::encode(false); | 
| - | 
| -    bit_field_2_ = DontOptimizeReasonField::encode(kNoReason) | | 
| -                   IsClassFieldInitializer::encode(false); | 
| - | 
| -    DCHECK(IsValidFunctionKind(kind)); | 
| +        RequiresClassFieldInit::encode(false) | | 
| +        ShouldNotBeUsedOnceHintField::encode(false) | | 
| +        DontOptimizeReasonField::encode(kNoReason) | | 
| +        IsClassFieldInitializer::encode(false); | 
| } | 
|  | 
| class FunctionTypeBits | 
| @@ -2751,16 +2748,12 @@ class FunctionLiteral final : public Expression { | 
| class HasDuplicateParameters : public BitField<bool, Pretenure::kNext, 1> {}; | 
| class IsFunction : public BitField<bool, HasDuplicateParameters::kNext, 1> {}; | 
| class ShouldEagerCompile : public BitField<bool, IsFunction::kNext, 1> {}; | 
| -  class FunctionKindBits | 
| -      : public BitField<FunctionKind, ShouldEagerCompile::kNext, 9> {}; | 
| class ShouldNotBeUsedOnceHintField | 
| -      : public BitField<bool, FunctionKindBits::kNext, 1> {}; | 
| +      : public BitField<bool, ShouldEagerCompile::kNext, 1> {}; | 
| class RequiresClassFieldInit | 
| : public BitField<bool, ShouldNotBeUsedOnceHintField::kNext, 1> {}; | 
| - | 
| -  uint32_t bit_field_2_; | 
| - | 
| -  class IsClassFieldInitializer : public BitField<bool, 0, 1> {}; | 
| +  class IsClassFieldInitializer | 
| +      : public BitField<bool, RequiresClassFieldInit::kNext, 1> {}; | 
| class DontOptimizeReasonField | 
| : public BitField<BailoutReason, IsClassFieldInitializer::kNext, 8> {}; | 
|  | 
| @@ -3469,13 +3462,12 @@ class AstNodeFactory final BASE_EMBEDDED { | 
| int expected_property_count, int parameter_count, | 
| FunctionLiteral::ParameterFlag has_duplicate_parameters, | 
| FunctionLiteral::FunctionType function_type, | 
| -      FunctionLiteral::EagerCompileHint eager_compile_hint, FunctionKind kind, | 
| -      int position) { | 
| -    return new (zone_) FunctionLiteral( | 
| -        zone_, name, ast_value_factory_, scope, body, | 
| -        materialized_literal_count, expected_property_count, parameter_count, | 
| -        function_type, has_duplicate_parameters, eager_compile_hint, kind, | 
| -        position, true); | 
| +      FunctionLiteral::EagerCompileHint eager_compile_hint, int position) { | 
| +    return new (zone_) FunctionLiteral(zone_, name, ast_value_factory_, scope, | 
| +                                       body, materialized_literal_count, | 
| +                                       expected_property_count, parameter_count, | 
| +                                       function_type, has_duplicate_parameters, | 
| +                                       eager_compile_hint, position, true); | 
| } | 
|  | 
| // Creates a FunctionLiteral representing a top-level script, the | 
| @@ -3490,8 +3482,7 @@ class AstNodeFactory final BASE_EMBEDDED { | 
| body, materialized_literal_count, expected_property_count, | 
| parameter_count, FunctionLiteral::kAnonymousExpression, | 
| FunctionLiteral::kNoDuplicateParameters, | 
| -        FunctionLiteral::kShouldLazyCompile, FunctionKind::kNormalFunction, 0, | 
| -        false); | 
| +        FunctionLiteral::kShouldLazyCompile, 0, false); | 
| } | 
|  | 
| ClassLiteral::Property* NewClassLiteralProperty( | 
|  |