| Index: src/interpreter/bytecode-generator.h
 | 
| diff --git a/src/interpreter/bytecode-generator.h b/src/interpreter/bytecode-generator.h
 | 
| index a483dfb6a84bdac65de2b60b31093b83df841e63..c738e0fafc52f582b4163ed783d69257a5e65b75 100644
 | 
| --- a/src/interpreter/bytecode-generator.h
 | 
| +++ b/src/interpreter/bytecode-generator.h
 | 
| @@ -36,7 +36,6 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
 | 
|    void VisitStatements(ZoneList<Statement*>* statments);
 | 
|  
 | 
|   private:
 | 
| -  class AccumulatorResultScope;
 | 
|    class ContextScope;
 | 
|    class ControlScope;
 | 
|    class ControlScopeForBreakable;
 | 
| @@ -47,9 +46,9 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
 | 
|    class ExpressionResultScope;
 | 
|    class EffectResultScope;
 | 
|    class GlobalDeclarationsBuilder;
 | 
| -  class RegisterResultScope;
 | 
|    class RegisterAllocationScope;
 | 
|    class TestResultScope;
 | 
| +  class ValueResultScope;
 | 
|  
 | 
|    enum class TestFallthrough { kThen, kElse, kNone };
 | 
|  
 | 
| @@ -73,8 +72,10 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
 | 
|    // Used by flow control routines to evaluate loop condition.
 | 
|    void VisitCondition(Expression* expr);
 | 
|  
 | 
| -  // Helper visitors which perform common operations.
 | 
| -  Register VisitArguments(ZoneList<Expression*>* arguments);
 | 
| +  // Visit the arguments expressions in |args| and store them in |args_regs|
 | 
| +  // starting at register |first_argument_register| in the list.
 | 
| +  void VisitArguments(ZoneList<Expression*>* args, RegisterList arg_regs,
 | 
| +                      size_t first_argument_register = 0);
 | 
|  
 | 
|    // Visit a keyed super property load. The optional
 | 
|    // |opt_receiver_out| register will have the receiver stored to it
 | 
| @@ -104,15 +105,6 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
 | 
|    void VisitVariableAssignment(Variable* variable, Token::Value op,
 | 
|                                 FeedbackVectorSlot slot);
 | 
|  
 | 
| -  void BuildNamedSuperPropertyStore(Register receiver, Register home_object,
 | 
| -                                    Register name, Register value);
 | 
| -  void BuildKeyedSuperPropertyStore(Register receiver, Register home_object,
 | 
| -                                    Register key, Register value);
 | 
| -  void BuildNamedSuperPropertyLoad(Register receiver, Register home_object,
 | 
| -                                   Register name);
 | 
| -  void BuildKeyedSuperPropertyLoad(Register receiver, Register home_object,
 | 
| -                                   Register key);
 | 
| -
 | 
|    void BuildAbort(BailoutReason bailout_reason);
 | 
|    void BuildThrowIfHole(Handle<String> name);
 | 
|    void BuildThrowIfNotHole(Handle<String> name);
 | 
| @@ -139,7 +131,6 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
 | 
|    void VisitClassLiteralForRuntimeDefinition(ClassLiteral* expr);
 | 
|    void VisitClassLiteralProperties(ClassLiteral* expr, Register literal,
 | 
|                                     Register prototype);
 | 
| -  void VisitClassLiteralStaticPrototypeWithComputedName(Register name);
 | 
|    void VisitThisFunctionVariable(Variable* variable);
 | 
|    void VisitNewTargetVariable(Variable* variable);
 | 
|    void VisitBlockDeclarationsAndStatements(Block* stmt);
 | 
| @@ -169,13 +160,10 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
 | 
|    void VisitForTest(Expression* expr, BytecodeLabels* then_labels,
 | 
|                      BytecodeLabels* else_labels, TestFallthrough fallthrough);
 | 
|  
 | 
| -  // Methods for tracking and remapping register.
 | 
| -  void RecordStoreToRegister(Register reg);
 | 
| -  Register LoadFromAliasedRegister(Register reg);
 | 
| -
 | 
| -  // Initialize an array of temporary registers with consecutive registers.
 | 
| -  template <size_t N>
 | 
| -  void InitializeWithConsecutiveRegisters(Register (®isters)[N]);
 | 
| +  // Returns the runtime function id for a store to super for the function's
 | 
| +  // language mode.
 | 
| +  inline Runtime::FunctionId StoreToSuperRuntimeId();
 | 
| +  inline Runtime::FunctionId StoreKeyedToSuperRuntimeId();
 | 
|  
 | 
|    inline BytecodeArrayBuilder* builder() const { return builder_; }
 | 
|    inline Zone* zone() const { return zone_; }
 | 
| @@ -194,12 +182,8 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
 | 
|      execution_result_ = execution_result;
 | 
|    }
 | 
|    ExpressionResultScope* execution_result() const { return execution_result_; }
 | 
| -  inline void set_register_allocator(
 | 
| -      RegisterAllocationScope* register_allocator) {
 | 
| -    register_allocator_ = register_allocator;
 | 
| -  }
 | 
| -  RegisterAllocationScope* register_allocator() const {
 | 
| -    return register_allocator_;
 | 
| +  BytecodeRegisterAllocator* register_allocator() const {
 | 
| +    return builder()->register_allocator();
 | 
|    }
 | 
|  
 | 
|    GlobalDeclarationsBuilder* globals_builder() { return globals_builder_; }
 | 
| @@ -223,7 +207,6 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
 | 
|    ControlScope* execution_control_;
 | 
|    ContextScope* execution_context_;
 | 
|    ExpressionResultScope* execution_result_;
 | 
| -  RegisterAllocationScope* register_allocator_;
 | 
|  
 | 
|    ZoneVector<BytecodeLabel> generator_resume_points_;
 | 
|    Register generator_state_;
 | 
| 
 |