Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index fce0e30238609f38dacd3f4baa5a32076e782aa4..29744a96e62f2606712610c282b2ac29ce9a00aa 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -118,8 +118,10 @@ class LChunkBuilder; |
V(IsConstructCallAndBranch) \ |
V(IsNilAndBranch) \ |
V(IsObjectAndBranch) \ |
+ V(IsStringAndBranch) \ |
V(IsSmiAndBranch) \ |
V(IsUndetectableAndBranch) \ |
+ V(StringCompareAndBranch) \ |
V(JSArrayLength) \ |
V(LeaveInlined) \ |
V(LoadContextSlot) \ |
@@ -2716,6 +2718,18 @@ class HIsObjectAndBranch: public HUnaryControlInstruction { |
DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch) |
}; |
+class HIsStringAndBranch: public HUnaryControlInstruction { |
+ public: |
+ explicit HIsStringAndBranch(HValue* value) |
+ : HUnaryControlInstruction(value, NULL, NULL) { } |
+ |
+ virtual Representation RequiredInputRepresentation(int index) { |
+ return Representation::Tagged(); |
+ } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(IsStringAndBranch) |
+}; |
+ |
class HIsSmiAndBranch: public HUnaryControlInstruction { |
public: |
@@ -2746,6 +2760,42 @@ class HIsUndetectableAndBranch: public HUnaryControlInstruction { |
}; |
+class HStringCompareAndBranch: public HTemplateControlInstruction<2, 3> { |
+ public: |
+ HStringCompareAndBranch(HValue* context, |
+ HValue* left, |
+ HValue* right, |
+ Token::Value token) |
+ : token_(token) { |
+ ASSERT(Token::IsCompareOp(token)); |
+ SetOperandAt(0, context); |
+ SetOperandAt(1, left); |
+ SetOperandAt(2, right); |
+ set_representation(Representation::Tagged()); |
+ } |
+ |
+ HValue* context() { return OperandAt(0); } |
+ HValue* left() { return OperandAt(1); } |
+ HValue* right() { return OperandAt(2); } |
+ Token::Value token() const { return token_; } |
+ |
+ virtual void PrintDataTo(StringStream* stream); |
+ |
+ virtual Representation RequiredInputRepresentation(int index) { |
+ return Representation::Tagged(); |
+ } |
+ |
+ Representation GetInputRepresentation() const { |
+ return Representation::Tagged(); |
+ } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(StringCompareAndBranch) |
+ |
+ private: |
+ Token::Value token_; |
+}; |
+ |
+ |
class HIsConstructCallAndBranch: public HTemplateControlInstruction<2, 0> { |
public: |
virtual Representation RequiredInputRepresentation(int index) { |