| Index: src/hydrogen.h
 | 
| diff --git a/src/hydrogen.h b/src/hydrogen.h
 | 
| index bc9bc9de05ecd9046eed2677bc0d14f861eae885..f2cb733acf4683c30482733acb7e503cb7cf3e53 100644
 | 
| --- a/src/hydrogen.h
 | 
| +++ b/src/hydrogen.h
 | 
| @@ -42,6 +42,7 @@ namespace internal {
 | 
|  
 | 
|  // Forward declarations.
 | 
|  class BitVector;
 | 
| +class FunctionState;
 | 
|  class HEnvironment;
 | 
|  class HGraph;
 | 
|  class HLoopInformation;
 | 
| @@ -121,7 +122,7 @@ class HBasicBlock: public ZoneObject {
 | 
|  
 | 
|    void Finish(HControlInstruction* last);
 | 
|    void FinishExit(HControlInstruction* instruction);
 | 
| -  void Goto(HBasicBlock* block, bool drop_extra = false);
 | 
| +  void Goto(HBasicBlock* block, FunctionState* state = NULL);
 | 
|  
 | 
|    int PredecessorIndexOf(HBasicBlock* predecessor) const;
 | 
|    void AddSimulate(int ast_id) { AddInstruction(CreateSimulate(ast_id)); }
 | 
| @@ -136,7 +137,7 @@ class HBasicBlock: public ZoneObject {
 | 
|    // instruction and updating the bailout environment.
 | 
|    void AddLeaveInlined(HValue* return_value,
 | 
|                         HBasicBlock* target,
 | 
| -                       bool drop_extra = false);
 | 
| +                       FunctionState* state = NULL);
 | 
|  
 | 
|    // If a target block is tagged as an inline function return, all
 | 
|    // predecessors should contain the inlined exit sequence:
 | 
| @@ -715,6 +716,16 @@ class FunctionState {
 | 
|  
 | 
|    FunctionState* outer() { return outer_; }
 | 
|  
 | 
| +  HEnterInlined* entry() { return entry_; }
 | 
| +  void set_entry(HEnterInlined* entry) { entry_ = entry; }
 | 
| +
 | 
| +  HArgumentsElements* arguments_elements() { return arguments_elements_; }
 | 
| +  void set_arguments_elements(HArgumentsElements* arguments_elements) {
 | 
| +    arguments_elements_ = arguments_elements;
 | 
| +  }
 | 
| +
 | 
| +  bool arguments_pushed() { return arguments_elements() != NULL; }
 | 
| +
 | 
|   private:
 | 
|    HGraphBuilder* owner_;
 | 
|  
 | 
| @@ -741,6 +752,12 @@ class FunctionState {
 | 
|    // return blocks.  NULL in all other cases.
 | 
|    TestContext* test_context_;
 | 
|  
 | 
| +  // When inlining HEnterInlined instruction corresponding to the function
 | 
| +  // entry.
 | 
| +  HEnterInlined* entry_;
 | 
| +
 | 
| +  HArgumentsElements* arguments_elements_;
 | 
| +
 | 
|    FunctionState* outer_;
 | 
|  };
 | 
|  
 | 
| @@ -994,6 +1011,7 @@ class HGraphBuilder: public AstVisitor {
 | 
|                                              LookupResult* lookup,
 | 
|                                              bool is_store);
 | 
|  
 | 
| +  void EnsureArgumentsArePushedForAccess();
 | 
|    bool TryArgumentsAccess(Property* expr);
 | 
|  
 | 
|    // Try to optimize fun.apply(receiver, arguments) pattern.
 | 
| 
 |