| Index: src/ast.h | 
| diff --git a/src/ast.h b/src/ast.h | 
| index 73b06631e49c8312ed4435a59735222a0a3ad017..01154d37628a9f8518497f8428c8523922db54be 100644 | 
| --- a/src/ast.h | 
| +++ b/src/ast.h | 
| @@ -1161,17 +1161,13 @@ class IfStatement final : public Statement { | 
|  | 
| class TryStatement : public Statement { | 
| public: | 
| -  int index() const { return index_; } | 
| Block* try_block() const { return try_block_; } | 
|  | 
| protected: | 
| -  TryStatement(Zone* zone, int index, Block* try_block, int pos) | 
| -      : Statement(zone, pos), index_(index), try_block_(try_block) {} | 
| +  TryStatement(Zone* zone, Block* try_block, int pos) | 
| +      : Statement(zone, pos), try_block_(try_block) {} | 
|  | 
| private: | 
| -  // Unique (per-function) index of this handler.  This is not an AST ID. | 
| -  int index_; | 
| - | 
| Block* try_block_; | 
| }; | 
|  | 
| @@ -1185,18 +1181,12 @@ class TryCatchStatement final : public TryStatement { | 
| Block* catch_block() const { return catch_block_; } | 
|  | 
| protected: | 
| -  TryCatchStatement(Zone* zone, | 
| -                    int index, | 
| -                    Block* try_block, | 
| -                    Scope* scope, | 
| -                    Variable* variable, | 
| -                    Block* catch_block, | 
| -                    int pos) | 
| -      : TryStatement(zone, index, try_block, pos), | 
| +  TryCatchStatement(Zone* zone, Block* try_block, Scope* scope, | 
| +                    Variable* variable, Block* catch_block, int pos) | 
| +      : TryStatement(zone, try_block, pos), | 
| scope_(scope), | 
| variable_(variable), | 
| -        catch_block_(catch_block) { | 
| -  } | 
| +        catch_block_(catch_block) {} | 
|  | 
| private: | 
| Scope* scope_; | 
| @@ -1212,10 +1202,9 @@ class TryFinallyStatement final : public TryStatement { | 
| Block* finally_block() const { return finally_block_; } | 
|  | 
| protected: | 
| -  TryFinallyStatement( | 
| -      Zone* zone, int index, Block* try_block, Block* finally_block, int pos) | 
| -      : TryStatement(zone, index, try_block, pos), | 
| -        finally_block_(finally_block) { } | 
| +  TryFinallyStatement(Zone* zone, Block* try_block, Block* finally_block, | 
| +                      int pos) | 
| +      : TryStatement(zone, try_block, pos), finally_block_(finally_block) {} | 
|  | 
| private: | 
| Block* finally_block_; | 
| @@ -2405,18 +2394,6 @@ class Yield final : public Expression { | 
| Expression* expression() const { return expression_; } | 
| Kind yield_kind() const { return yield_kind_; } | 
|  | 
| -  // Delegating yield surrounds the "yield" in a "try/catch".  This index | 
| -  // locates the catch handler in the handler table, and is equivalent to | 
| -  // TryCatchStatement::index(). | 
| -  int index() const { | 
| -    DCHECK_EQ(kDelegating, yield_kind()); | 
| -    return index_; | 
| -  } | 
| -  void set_index(int index) { | 
| -    DCHECK_EQ(kDelegating, yield_kind()); | 
| -    index_ = index; | 
| -  } | 
| - | 
| // Type feedback information. | 
| bool HasFeedbackSlots() const { return yield_kind() == kDelegating; } | 
| virtual FeedbackVectorRequirements ComputeFeedbackRequirements( | 
| @@ -2449,14 +2426,12 @@ class Yield final : public Expression { | 
| generator_object_(generator_object), | 
| expression_(expression), | 
| yield_kind_(yield_kind), | 
| -        index_(-1), | 
| yield_first_feedback_slot_(FeedbackVectorICSlot::Invalid()) {} | 
|  | 
| private: | 
| Expression* generator_object_; | 
| Expression* expression_; | 
| Kind yield_kind_; | 
| -  int index_; | 
| FeedbackVectorICSlot yield_first_feedback_slot_; | 
| }; | 
|  | 
| @@ -2523,7 +2498,6 @@ class FunctionLiteral final : public Expression { | 
|  | 
| int materialized_literal_count() { return materialized_literal_count_; } | 
| int expected_property_count() { return expected_property_count_; } | 
| -  int handler_count() { return handler_count_; } | 
| int parameter_count() { return parameter_count_; } | 
|  | 
| bool AllowsLazyCompilation(); | 
| @@ -2618,8 +2592,8 @@ class FunctionLiteral final : public Expression { | 
| FunctionLiteral(Zone* zone, const AstRawString* name, | 
| AstValueFactory* ast_value_factory, Scope* scope, | 
| ZoneList<Statement*>* body, int materialized_literal_count, | 
| -                  int expected_property_count, int handler_count, | 
| -                  int parameter_count, FunctionType function_type, | 
| +                  int expected_property_count, int parameter_count, | 
| +                  FunctionType function_type, | 
| ParameterFlag has_duplicate_parameters, | 
| IsFunctionFlag is_function, | 
| EagerCompileHint eager_compile_hint, FunctionKind kind, | 
| @@ -2633,7 +2607,6 @@ class FunctionLiteral final : public Expression { | 
| dont_optimize_reason_(kNoReason), | 
| materialized_literal_count_(materialized_literal_count), | 
| expected_property_count_(expected_property_count), | 
| -        handler_count_(handler_count), | 
| parameter_count_(parameter_count), | 
| function_token_position_(RelocInfo::kNoPosition) { | 
| bitfield_ = IsExpression::encode(function_type != DECLARATION) | | 
| @@ -2660,7 +2633,6 @@ class FunctionLiteral final : public Expression { | 
|  | 
| int materialized_literal_count_; | 
| int expected_property_count_; | 
| -  int handler_count_; | 
| int parameter_count_; | 
| int function_token_position_; | 
|  | 
| @@ -3360,22 +3332,17 @@ class AstNodeFactory final BASE_EMBEDDED { | 
| IfStatement(zone_, condition, then_statement, else_statement, pos); | 
| } | 
|  | 
| -  TryCatchStatement* NewTryCatchStatement(int index, | 
| -                                          Block* try_block, | 
| -                                          Scope* scope, | 
| +  TryCatchStatement* NewTryCatchStatement(Block* try_block, Scope* scope, | 
| Variable* variable, | 
| -                                          Block* catch_block, | 
| -                                          int pos) { | 
| -    return new (zone_) TryCatchStatement(zone_, index, try_block, scope, | 
| -                                         variable, catch_block, pos); | 
| +                                          Block* catch_block, int pos) { | 
| +    return new (zone_) | 
| +        TryCatchStatement(zone_, try_block, scope, variable, catch_block, pos); | 
| } | 
|  | 
| -  TryFinallyStatement* NewTryFinallyStatement(int index, | 
| -                                              Block* try_block, | 
| -                                              Block* finally_block, | 
| -                                              int pos) { | 
| +  TryFinallyStatement* NewTryFinallyStatement(Block* try_block, | 
| +                                              Block* finally_block, int pos) { | 
| return new (zone_) | 
| -        TryFinallyStatement(zone_, index, try_block, finally_block, pos); | 
| +        TryFinallyStatement(zone_, try_block, finally_block, pos); | 
| } | 
|  | 
| DebuggerStatement* NewDebuggerStatement(int pos) { | 
| @@ -3577,7 +3544,7 @@ class AstNodeFactory final BASE_EMBEDDED { | 
| FunctionLiteral* NewFunctionLiteral( | 
| const AstRawString* name, AstValueFactory* ast_value_factory, | 
| Scope* scope, ZoneList<Statement*>* body, int materialized_literal_count, | 
| -      int expected_property_count, int handler_count, int parameter_count, | 
| +      int expected_property_count, int parameter_count, | 
| FunctionLiteral::ParameterFlag has_duplicate_parameters, | 
| FunctionLiteral::FunctionType function_type, | 
| FunctionLiteral::IsFunctionFlag is_function, | 
| @@ -3585,7 +3552,7 @@ class AstNodeFactory final BASE_EMBEDDED { | 
| int position) { | 
| return new (zone_) FunctionLiteral( | 
| zone_, name, ast_value_factory, scope, body, materialized_literal_count, | 
| -        expected_property_count, handler_count, parameter_count, function_type, | 
| +        expected_property_count, parameter_count, function_type, | 
| has_duplicate_parameters, is_function, eager_compile_hint, kind, | 
| position); | 
| } | 
|  |