| Index: src/ast.h
 | 
| diff --git a/src/ast.h b/src/ast.h
 | 
| index e36eb9b32182e481fa8f91e749758e61e228c733..34bdb85b35bb3d05fab1d31e129583c45ee69bc5 100644
 | 
| --- a/src/ast.h
 | 
| +++ b/src/ast.h
 | 
| @@ -165,7 +165,6 @@ class AstNode: public ZoneObject {
 | 
|    virtual BreakableStatement* AsBreakableStatement() { return NULL; }
 | 
|    virtual IterationStatement* AsIterationStatement() { return NULL; }
 | 
|    virtual MaterializedLiteral* AsMaterializedLiteral() { return NULL; }
 | 
| -  virtual Slot* AsSlot() { return NULL; }
 | 
|  
 | 
|    // True if the node is simple enough for us to inline calls containing it.
 | 
|    virtual bool IsInlineable() const = 0;
 | 
| @@ -1126,9 +1125,6 @@ class VariableProxy: public Expression {
 | 
|  
 | 
|    DECLARE_NODE_TYPE(VariableProxy)
 | 
|  
 | 
| -  // Type testing & conversion
 | 
| -  Variable* AsVariable() { return (this == NULL) ? NULL : var_; }
 | 
| -
 | 
|    virtual bool IsValidLeftHandSide() {
 | 
|      return var_ == NULL ? true : var_->IsValidLeftHandSide();
 | 
|    }
 | 
| @@ -1145,10 +1141,7 @@ class VariableProxy: public Expression {
 | 
|      return !is_this() && name().is_identical_to(n);
 | 
|    }
 | 
|  
 | 
| -  bool IsArguments() {
 | 
| -    Variable* variable = AsVariable();
 | 
| -    return (variable == NULL) ? false : variable->is_arguments();
 | 
| -  }
 | 
| +  bool IsArguments() { return var_ != NULL && var_->is_arguments(); }
 | 
|  
 | 
|    Handle<String> name() const { return name_; }
 | 
|    Variable* var() const { return var_; }
 | 
| @@ -1192,55 +1185,6 @@ class VariableProxySentinel: public VariableProxy {
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class Slot: public Expression {
 | 
| - public:
 | 
| -  enum Type {
 | 
| -    // A slot in the parameter section on the stack. index() is
 | 
| -    // the parameter index, counting left-to-right, starting at 0.
 | 
| -    PARAMETER,
 | 
| -
 | 
| -    // A slot in the local section on the stack. index() is
 | 
| -    // the variable index in the stack frame, starting at 0.
 | 
| -    LOCAL,
 | 
| -
 | 
| -    // An indexed slot in a heap context. index() is the
 | 
| -    // variable index in the context object on the heap,
 | 
| -    // starting at 0. var()->scope() is the corresponding
 | 
| -    // scope.
 | 
| -    CONTEXT,
 | 
| -
 | 
| -    // A named slot in a heap context. var()->name() is the
 | 
| -    // variable name in the context object on the heap,
 | 
| -    // with lookup starting at the current context. index()
 | 
| -    // is invalid.
 | 
| -    LOOKUP
 | 
| -  };
 | 
| -
 | 
| -  Slot(Isolate* isolate, Variable* var, Type type, int index)
 | 
| -      : Expression(isolate), var_(var), type_(type), index_(index) {
 | 
| -    ASSERT(var != NULL);
 | 
| -  }
 | 
| -
 | 
| -  virtual void Accept(AstVisitor* v);
 | 
| -
 | 
| -  virtual Slot* AsSlot() { return this; }
 | 
| -
 | 
| -  bool IsStackAllocated() { return type_ == PARAMETER || type_ == LOCAL; }
 | 
| -
 | 
| -  // Accessors
 | 
| -  Variable* var() const { return var_; }
 | 
| -  Type type() const { return type_; }
 | 
| -  int index() const { return index_; }
 | 
| -  bool is_arguments() const { return var_->is_arguments(); }
 | 
| -  virtual bool IsInlineable() const;
 | 
| -
 | 
| - private:
 | 
| -  Variable* var_;
 | 
| -  Type type_;
 | 
| -  int index_;
 | 
| -};
 | 
| -
 | 
| -
 | 
|  class Property: public Expression {
 | 
|   public:
 | 
|    Property(Isolate* isolate,
 | 
| @@ -2251,9 +2195,6 @@ class AstVisitor BASE_EMBEDDED {
 | 
|    void SetStackOverflow() { stack_overflow_ = true; }
 | 
|    void ClearStackOverflow() { stack_overflow_ = false; }
 | 
|  
 | 
| -  // Nodes not appearing in the AST, including slots.
 | 
| -  virtual void VisitSlot(Slot* node) { UNREACHABLE(); }
 | 
| -
 | 
|    // Individual AST nodes.
 | 
|  #define DEF_VISIT(type)                         \
 | 
|    virtual void Visit##type(type* node) = 0;
 | 
| 
 |