| Index: src/ia32/lithium-ia32.h
 | 
| ===================================================================
 | 
| --- src/ia32/lithium-ia32.h	(revision 8460)
 | 
| +++ src/ia32/lithium-ia32.h	(working copy)
 | 
| @@ -71,15 +71,11 @@
 | 
|    V(ClampDToUint8)                              \
 | 
|    V(ClampIToUint8)                              \
 | 
|    V(ClampTToUint8)                              \
 | 
| -  V(ClassOfTest)                                \
 | 
|    V(ClassOfTestAndBranch)                       \
 | 
| -  V(CmpID)                                      \
 | 
|    V(CmpIDAndBranch)                             \
 | 
| -  V(CmpObjectEq)                                \
 | 
|    V(CmpObjectEqAndBranch)                       \
 | 
|    V(CmpMapAndBranch)                            \
 | 
|    V(CmpT)                                       \
 | 
| -  V(CmpConstantEq)                              \
 | 
|    V(CmpConstantEqAndBranch)                     \
 | 
|    V(ConstantD)                                  \
 | 
|    V(ConstantI)                                  \
 | 
| @@ -97,9 +93,7 @@
 | 
|    V(GlobalObject)                               \
 | 
|    V(GlobalReceiver)                             \
 | 
|    V(Goto)                                       \
 | 
| -  V(HasCachedArrayIndex)                        \
 | 
|    V(HasCachedArrayIndexAndBranch)               \
 | 
| -  V(HasInstanceType)                            \
 | 
|    V(HasInstanceTypeAndBranch)                   \
 | 
|    V(In)                                         \
 | 
|    V(InstanceOf)                                 \
 | 
| @@ -107,15 +101,10 @@
 | 
|    V(InstructionGap)                             \
 | 
|    V(Integer32ToDouble)                          \
 | 
|    V(InvokeFunction)                             \
 | 
| -  V(IsConstructCall)                            \
 | 
|    V(IsConstructCallAndBranch)                   \
 | 
| -  V(IsNull)                                     \
 | 
|    V(IsNullAndBranch)                            \
 | 
| -  V(IsObject)                                   \
 | 
|    V(IsObjectAndBranch)                          \
 | 
| -  V(IsSmi)                                      \
 | 
|    V(IsSmiAndBranch)                             \
 | 
| -  V(IsUndetectable)                             \
 | 
|    V(IsUndetectableAndBranch)                    \
 | 
|    V(JSArrayLength)                              \
 | 
|    V(Label)                                      \
 | 
| @@ -167,7 +156,6 @@
 | 
|    V(Throw)                                      \
 | 
|    V(ToFastProperties)                           \
 | 
|    V(Typeof)                                     \
 | 
| -  V(TypeofIs)                                   \
 | 
|    V(TypeofIsAndBranch)                          \
 | 
|    V(UnaryMathOperation)                         \
 | 
|    V(UnknownOSRValue)                            \
 | 
| @@ -226,7 +214,6 @@
 | 
|    virtual bool IsGap() const { return false; }
 | 
|  
 | 
|    virtual bool IsControl() const { return false; }
 | 
| -  virtual void SetBranchTargets(int true_block_id, int false_block_id) { }
 | 
|  
 | 
|    void set_environment(LEnvironment* env) { environment_ = env; }
 | 
|    LEnvironment* environment() const { return environment_; }
 | 
| @@ -456,16 +443,15 @@
 | 
|   public:
 | 
|    virtual bool IsControl() const { return true; }
 | 
|  
 | 
| -  int true_block_id() const { return true_block_id_; }
 | 
| -  int false_block_id() const { return false_block_id_; }
 | 
| -  void SetBranchTargets(int true_block_id, int false_block_id) {
 | 
| -    true_block_id_ = true_block_id;
 | 
| -    false_block_id_ = false_block_id;
 | 
| -  }
 | 
| +  int SuccessorCount() { return hydrogen()->SuccessorCount(); }
 | 
| +  HBasicBlock* SuccessorAt(int i) { return hydrogen()->SuccessorAt(i); }
 | 
| +  int true_block_id() { return hydrogen()->SuccessorAt(0)->block_id(); }
 | 
| +  int false_block_id() { return hydrogen()->SuccessorAt(1)->block_id(); }
 | 
|  
 | 
|   private:
 | 
| -  int true_block_id_;
 | 
| -  int false_block_id_;
 | 
| +  HControlInstruction* hydrogen() {
 | 
| +    return HControlInstruction::cast(this->hydrogen_value());
 | 
| +  }
 | 
|  };
 | 
|  
 | 
|  
 | 
| @@ -567,23 +553,6 @@
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class LCmpID: public LTemplateInstruction<1, 2, 0> {
 | 
| - public:
 | 
| -  LCmpID(LOperand* left, LOperand* right) {
 | 
| -    inputs_[0] = left;
 | 
| -    inputs_[1] = right;
 | 
| -  }
 | 
| -
 | 
| -  DECLARE_CONCRETE_INSTRUCTION(CmpID, "cmp-id")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(Compare)
 | 
| -
 | 
| -  Token::Value op() const { return hydrogen()->token(); }
 | 
| -  bool is_double() const {
 | 
| -    return hydrogen()->GetInputRepresentation().IsDouble();
 | 
| -  }
 | 
| -};
 | 
| -
 | 
| -
 | 
|  class LCmpIDAndBranch: public LControlInstruction<2, 0> {
 | 
|   public:
 | 
|    LCmpIDAndBranch(LOperand* left, LOperand* right) {
 | 
| @@ -592,7 +561,7 @@
 | 
|    }
 | 
|  
 | 
|    DECLARE_CONCRETE_INSTRUCTION(CmpIDAndBranch, "cmp-id-and-branch")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(Compare)
 | 
| +  DECLARE_HYDROGEN_ACCESSOR(CompareIDAndBranch)
 | 
|  
 | 
|    Token::Value op() const { return hydrogen()->token(); }
 | 
|    bool is_double() const {
 | 
| @@ -617,17 +586,6 @@
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class LCmpObjectEq: public LTemplateInstruction<1, 2, 0> {
 | 
| - public:
 | 
| -  LCmpObjectEq(LOperand* left, LOperand* right) {
 | 
| -    inputs_[0] = left;
 | 
| -    inputs_[1] = right;
 | 
| -  }
 | 
| -
 | 
| -  DECLARE_CONCRETE_INSTRUCTION(CmpObjectEq, "cmp-object-eq")
 | 
| -};
 | 
| -
 | 
| -
 | 
|  class LCmpObjectEqAndBranch: public LControlInstruction<2, 0> {
 | 
|   public:
 | 
|    LCmpObjectEqAndBranch(LOperand* left, LOperand* right) {
 | 
| @@ -640,17 +598,6 @@
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class LCmpConstantEq: public LTemplateInstruction<1, 1, 0> {
 | 
| - public:
 | 
| -  explicit LCmpConstantEq(LOperand* left) {
 | 
| -    inputs_[0] = left;
 | 
| -  }
 | 
| -
 | 
| -  DECLARE_CONCRETE_INSTRUCTION(CmpConstantEq, "cmp-constant-eq")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(CompareConstantEq)
 | 
| -};
 | 
| -
 | 
| -
 | 
|  class LCmpConstantEqAndBranch: public LControlInstruction<1, 0> {
 | 
|   public:
 | 
|    explicit LCmpConstantEqAndBranch(LOperand* left) {
 | 
| @@ -659,23 +606,10 @@
 | 
|  
 | 
|    DECLARE_CONCRETE_INSTRUCTION(CmpConstantEqAndBranch,
 | 
|                                 "cmp-constant-eq-and-branch")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(CompareConstantEq)
 | 
| +  DECLARE_HYDROGEN_ACCESSOR(CompareConstantEqAndBranch)
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class LIsNull: public LTemplateInstruction<1, 1, 0> {
 | 
| - public:
 | 
| -  explicit LIsNull(LOperand* value) {
 | 
| -    inputs_[0] = value;
 | 
| -  }
 | 
| -
 | 
| -  DECLARE_CONCRETE_INSTRUCTION(IsNull, "is-null")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(IsNull)
 | 
| -
 | 
| -  bool is_strict() const { return hydrogen()->is_strict(); }
 | 
| -};
 | 
| -
 | 
| -
 | 
|  class LIsNullAndBranch: public LControlInstruction<1, 1> {
 | 
|   public:
 | 
|    LIsNullAndBranch(LOperand* value, LOperand* temp) {
 | 
| @@ -684,7 +618,7 @@
 | 
|    }
 | 
|  
 | 
|    DECLARE_CONCRETE_INSTRUCTION(IsNullAndBranch, "is-null-and-branch")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(IsNull)
 | 
| +  DECLARE_HYDROGEN_ACCESSOR(IsNullAndBranch)
 | 
|  
 | 
|    bool is_strict() const { return hydrogen()->is_strict(); }
 | 
|  
 | 
| @@ -692,16 +626,6 @@
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class LIsObject: public LTemplateInstruction<1, 1, 0> {
 | 
| - public:
 | 
| -  explicit LIsObject(LOperand* value) {
 | 
| -    inputs_[0] = value;
 | 
| -  }
 | 
| -
 | 
| -  DECLARE_CONCRETE_INSTRUCTION(IsObject, "is-object")
 | 
| -};
 | 
| -
 | 
| -
 | 
|  class LIsObjectAndBranch: public LControlInstruction<1, 1> {
 | 
|   public:
 | 
|    LIsObjectAndBranch(LOperand* value, LOperand* temp) {
 | 
| @@ -715,17 +639,6 @@
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class LIsSmi: public LTemplateInstruction<1, 1, 0> {
 | 
| - public:
 | 
| -  explicit LIsSmi(LOperand* value) {
 | 
| -    inputs_[0] = value;
 | 
| -  }
 | 
| -
 | 
| -  DECLARE_CONCRETE_INSTRUCTION(IsSmi, "is-smi")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(IsSmi)
 | 
| -};
 | 
| -
 | 
| -
 | 
|  class LIsSmiAndBranch: public LControlInstruction<1, 0> {
 | 
|   public:
 | 
|    explicit LIsSmiAndBranch(LOperand* value) {
 | 
| @@ -733,22 +646,12 @@
 | 
|    }
 | 
|  
 | 
|    DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch")
 | 
| +  DECLARE_HYDROGEN_ACCESSOR(IsSmiAndBranch)
 | 
|  
 | 
|    virtual void PrintDataTo(StringStream* stream);
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class LIsUndetectable: public LTemplateInstruction<1, 1, 0> {
 | 
| - public:
 | 
| -  explicit LIsUndetectable(LOperand* value) {
 | 
| -    inputs_[0] = value;
 | 
| -  }
 | 
| -
 | 
| -  DECLARE_CONCRETE_INSTRUCTION(IsUndetectable, "is-undetectable")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(IsUndetectable)
 | 
| -};
 | 
| -
 | 
| -
 | 
|  class LIsUndetectableAndBranch: public LControlInstruction<1, 1> {
 | 
|   public:
 | 
|    explicit LIsUndetectableAndBranch(LOperand* value, LOperand* temp) {
 | 
| @@ -763,17 +666,6 @@
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class LHasInstanceType: public LTemplateInstruction<1, 1, 0> {
 | 
| - public:
 | 
| -  explicit LHasInstanceType(LOperand* value) {
 | 
| -    inputs_[0] = value;
 | 
| -  }
 | 
| -
 | 
| -  DECLARE_CONCRETE_INSTRUCTION(HasInstanceType, "has-instance-type")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(HasInstanceType)
 | 
| -};
 | 
| -
 | 
| -
 | 
|  class LHasInstanceTypeAndBranch: public LControlInstruction<1, 1> {
 | 
|   public:
 | 
|    LHasInstanceTypeAndBranch(LOperand* value, LOperand* temp) {
 | 
| @@ -783,7 +675,7 @@
 | 
|  
 | 
|    DECLARE_CONCRETE_INSTRUCTION(HasInstanceTypeAndBranch,
 | 
|                                 "has-instance-type-and-branch")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(HasInstanceType)
 | 
| +  DECLARE_HYDROGEN_ACCESSOR(HasInstanceTypeAndBranch)
 | 
|  
 | 
|    virtual void PrintDataTo(StringStream* stream);
 | 
|  };
 | 
| @@ -800,17 +692,6 @@
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class LHasCachedArrayIndex: public LTemplateInstruction<1, 1, 0> {
 | 
| - public:
 | 
| -  explicit LHasCachedArrayIndex(LOperand* value) {
 | 
| -    inputs_[0] = value;
 | 
| -  }
 | 
| -
 | 
| -  DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndex, "has-cached-array-index")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndex)
 | 
| -};
 | 
| -
 | 
| -
 | 
|  class LHasCachedArrayIndexAndBranch: public LControlInstruction<1, 0> {
 | 
|   public:
 | 
|    explicit LHasCachedArrayIndexAndBranch(LOperand* value) {
 | 
| @@ -823,13 +704,6 @@
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class LIsConstructCall: public LTemplateInstruction<1, 0, 0> {
 | 
| - public:
 | 
| -  DECLARE_CONCRETE_INSTRUCTION(IsConstructCall, "is-construct-call")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(IsConstructCall)
 | 
| -};
 | 
| -
 | 
| -
 | 
|  class LIsConstructCallAndBranch: public LControlInstruction<0, 1> {
 | 
|   public:
 | 
|    explicit LIsConstructCallAndBranch(LOperand* temp) {
 | 
| @@ -841,20 +715,6 @@
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class LClassOfTest: public LTemplateInstruction<1, 1, 1> {
 | 
| - public:
 | 
| -  LClassOfTest(LOperand* value, LOperand* temp) {
 | 
| -    inputs_[0] = value;
 | 
| -    temps_[0] = temp;
 | 
| -  }
 | 
| -
 | 
| -  DECLARE_CONCRETE_INSTRUCTION(ClassOfTest, "class-of-test")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(ClassOfTest)
 | 
| -
 | 
| -  virtual void PrintDataTo(StringStream* stream);
 | 
| -};
 | 
| -
 | 
| -
 | 
|  class LClassOfTestAndBranch: public LControlInstruction<1, 2> {
 | 
|   public:
 | 
|    LClassOfTestAndBranch(LOperand* value, LOperand* temp, LOperand* temp2) {
 | 
| @@ -865,7 +725,7 @@
 | 
|  
 | 
|    DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch,
 | 
|                                 "class-of-test-and-branch")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(ClassOfTest)
 | 
| +  DECLARE_HYDROGEN_ACCESSOR(ClassOfTestAndBranch)
 | 
|  
 | 
|    virtual void PrintDataTo(StringStream* stream);
 | 
|  };
 | 
| @@ -879,7 +739,7 @@
 | 
|    }
 | 
|  
 | 
|    DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(Compare)
 | 
| +  DECLARE_HYDROGEN_ACCESSOR(CompareGeneric)
 | 
|  
 | 
|    Token::Value op() const { return hydrogen()->token(); }
 | 
|  };
 | 
| @@ -1015,7 +875,7 @@
 | 
|    }
 | 
|  
 | 
|    DECLARE_CONCRETE_INSTRUCTION(Branch, "branch")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(Value)
 | 
| +  DECLARE_HYDROGEN_ACCESSOR(Branch)
 | 
|  
 | 
|    virtual void PrintDataTo(StringStream* stream);
 | 
|  };
 | 
| @@ -2034,21 +1894,6 @@
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class LTypeofIs: public LTemplateInstruction<1, 1, 0> {
 | 
| - public:
 | 
| -  explicit LTypeofIs(LOperand* value) {
 | 
| -    inputs_[0] = value;
 | 
| -  }
 | 
| -
 | 
| -  DECLARE_CONCRETE_INSTRUCTION(TypeofIs, "typeof-is")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(TypeofIs)
 | 
| -
 | 
| -  Handle<String> type_literal() { return hydrogen()->type_literal(); }
 | 
| -
 | 
| -  virtual void PrintDataTo(StringStream* stream);
 | 
| -};
 | 
| -
 | 
| -
 | 
|  class LTypeofIsAndBranch: public LControlInstruction<1, 0> {
 | 
|   public:
 | 
|    explicit LTypeofIsAndBranch(LOperand* value) {
 | 
| @@ -2056,7 +1901,7 @@
 | 
|    }
 | 
|  
 | 
|    DECLARE_CONCRETE_INSTRUCTION(TypeofIsAndBranch, "typeof-is-and-branch")
 | 
| -  DECLARE_HYDROGEN_ACCESSOR(TypeofIs)
 | 
| +  DECLARE_HYDROGEN_ACCESSOR(TypeofIsAndBranch)
 | 
|  
 | 
|    Handle<String> type_literal() { return hydrogen()->type_literal(); }
 | 
|  
 | 
| 
 |