Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index 66e3973ad068b1796d824cfc5ea0d3aa31fddfa0..8cb2f591742aebec491d57d4ab9305b51cc1eeb4 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -98,7 +98,7 @@ class LChunkBuilder; |
V(ClassOfTestAndBranch) \ |
V(CompareNumericAndBranch) \ |
V(CompareHoleAndBranch) \ |
- V(CompareGenericAndBranch) \ |
+ V(CompareGeneric) \ |
V(CompareObjectEqAndBranch) \ |
V(CompareMap) \ |
V(Constant) \ |
@@ -1069,56 +1069,26 @@ class HValue : public ZoneObject { |
}; |
-#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P0(I) \ |
- static I* New(Zone* zone, HValue* context) { \ |
- return new(zone) I(context); \ |
-} |
- |
#define DECLARE_INSTRUCTION_FACTORY_P0(I) \ |
static I* New(Zone* zone, HValue* context) { \ |
return new(zone) I(); \ |
} |
-#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P1(I, P1) \ |
- static I* New(Zone* zone, HValue* context, P1 p1) { \ |
- return new(zone) I(context, p1); \ |
- } |
- |
#define DECLARE_INSTRUCTION_FACTORY_P1(I, P1) \ |
static I* New(Zone* zone, HValue* context, P1 p1) { \ |
return new(zone) I(p1); \ |
} |
-#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(I, P1, P2) \ |
- static I* New(Zone* zone, HValue* context, P1 p1, P2 p2) { \ |
- return new(zone) I(context, p1, p2); \ |
- } |
- |
#define DECLARE_INSTRUCTION_FACTORY_P2(I, P1, P2) \ |
static I* New(Zone* zone, HValue* context, P1 p1, P2 p2) { \ |
return new(zone) I(p1, p2); \ |
} |
-#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(I, P1, P2, P3) \ |
- static I* New(Zone* zone, HValue* context, P1 p1, P2 p2, P3 p3) { \ |
- return new(zone) I(context, p1, p2, p3); \ |
- } |
- |
#define DECLARE_INSTRUCTION_FACTORY_P3(I, P1, P2, P3) \ |
static I* New(Zone* zone, HValue* context, P1 p1, P2 p2, P3 p3) { \ |
return new(zone) I(p1, p2, p3); \ |
} |
-#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4(I, P1, P2, P3, P4) \ |
- static I* New(Zone* zone, \ |
- HValue* context, \ |
- P1 p1, \ |
- P2 p2, \ |
- P3 p3, \ |
- P4 p4) { \ |
- return new(zone) I(context, p1, p2, p3, p4); \ |
- } |
- |
#define DECLARE_INSTRUCTION_FACTORY_P4(I, P1, P2, P3, P4) \ |
static I* New(Zone* zone, \ |
HValue* context, \ |
@@ -1129,17 +1099,6 @@ class HValue : public ZoneObject { |
return new(zone) I(p1, p2, p3, p4); \ |
} |
-#define DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P5(I, P1, P2, P3, P4, P5) \ |
- static I* New(Zone* zone, \ |
- HValue* context, \ |
- P1 p1, \ |
- P2 p2, \ |
- P3 p3, \ |
- P4 p4, \ |
- P5 p5) { \ |
- return new(zone) I(context, p1, p2, p3, p4, p5); \ |
- } |
- |
#define DECLARE_INSTRUCTION_FACTORY_P5(I, P1, P2, P3, P4, P5) \ |
static I* New(Zone* zone, \ |
HValue* context, \ |
@@ -1254,10 +1213,6 @@ class HControlInstruction : public HInstruction { |
SetSuccessorAt(1, swap); |
} |
-#ifdef DEBUG |
- virtual void Verify() V8_OVERRIDE; |
-#endif |
- |
DECLARE_ABSTRACT_INSTRUCTION(ControlInstruction) |
}; |
@@ -4053,18 +4008,18 @@ class HArithmeticBinaryOperation : public HBinaryOperation { |
}; |
-class HCompareGenericAndBranch V8_FINAL |
- : public HTemplateControlInstruction<2, 3> { |
+class HCompareGeneric V8_FINAL : public HBinaryOperation { |
public: |
- DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HCompareGenericAndBranch, |
- HValue*, HValue*, Token::Value); |
- DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P5(HCompareGenericAndBranch, |
- HValue*, HValue*, Token::Value, |
- HBasicBlock*, HBasicBlock*); |
- HValue* context() { return OperandAt(0); } |
- HValue* left() { return OperandAt(1); } |
- HValue* right() { return OperandAt(2); } |
- Token::Value token() const { return token_; } |
+ HCompareGeneric(HValue* context, |
+ HValue* left, |
+ HValue* right, |
+ Token::Value token) |
+ : HBinaryOperation(context, left, right, HType::Boolean()), |
+ token_(token) { |
+ ASSERT(Token::IsCompareOp(token)); |
+ set_representation(Representation::Tagged()); |
+ SetAllSideEffects(); |
+ } |
virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { |
return index == 0 |
@@ -4072,34 +4027,12 @@ class HCompareGenericAndBranch V8_FINAL |
: representation(); |
} |
- void set_observed_input_representation(Representation left, |
- Representation right) { |
- observed_input_representation_[0] = left; |
- observed_input_representation_[1] = right; |
- } |
- |
+ Token::Value token() const { return token_; } |
virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; |
- DECLARE_CONCRETE_INSTRUCTION(CompareGenericAndBranch) |
+ DECLARE_CONCRETE_INSTRUCTION(CompareGeneric) |
private: |
- HCompareGenericAndBranch(HValue* context, |
- HValue* left, |
- HValue* right, |
- Token::Value token, |
- HBasicBlock* true_target = NULL, |
- HBasicBlock* false_target = NULL) |
- : token_(token) { |
- set_representation(Representation::Tagged()); |
- SetAllSideEffects(); |
- SetOperandAt(0, context); |
- SetOperandAt(1, left); |
- SetOperandAt(2, right); |
- SetSuccessorAt(0, true_target); |
- SetSuccessorAt(1, false_target); |
- } |
- |
- Representation observed_input_representation_[2]; |
Token::Value token_; |
}; |
@@ -4301,9 +4234,9 @@ class HIsUndetectableAndBranch V8_FINAL : public HUnaryControlInstruction { |
class HStringCompareAndBranch : public HTemplateControlInstruction<2, 3> { |
public: |
HStringCompareAndBranch(HValue* context, |
- HValue* left, |
- HValue* right, |
- Token::Value token) |
+ HValue* left, |
+ HValue* right, |
+ Token::Value token) |
: token_(token) { |
ASSERT(Token::IsCompareOp(token)); |
SetOperandAt(0, context); |