Index: src/hydrogen-instructions.h |
=================================================================== |
--- src/hydrogen-instructions.h (revision 10863) |
+++ src/hydrogen-instructions.h (working copy) |
@@ -645,6 +645,9 @@ |
void ClearFlag(Flag f) { flags_ &= ~(1 << f); } |
bool CheckFlag(Flag f) const { return (flags_ & (1 << f)) != 0; } |
+ // Returns true if the flag specified is set for all uses, false otherwise. |
+ bool CheckUsesForFlag(Flag f); |
+ |
GVNFlagSet gvn_flags() const { return gvn_flags_; } |
void SetGVNFlag(GVNFlag f) { gvn_flags_.Add(f); } |
void ClearGVNFlag(GVNFlag f) { gvn_flags_.Remove(f); } |
@@ -824,6 +827,8 @@ |
bool has_position() const { return position_ != RelocInfo::kNoPosition; } |
void set_position(int position) { position_ = position; } |
+ bool CanTruncateToInt32() const { return CheckFlag(kTruncatingToInt32); } |
+ |
virtual LInstruction* CompileToLithium(LChunkBuilder* builder) = 0; |
#ifdef DEBUG |
@@ -1121,10 +1126,6 @@ |
return reinterpret_cast<HUnaryOperation*>(value); |
} |
- virtual bool CanTruncateToInt32() const { |
- return CheckFlag(kTruncatingToInt32); |
- } |
- |
HValue* value() { return OperandAt(0); } |
virtual void PrintDataTo(StringStream* stream); |
}; |
@@ -1248,16 +1249,13 @@ |
: HUnaryOperation(value) { |
set_representation(Representation::Integer32()); |
SetFlag(kUseGVN); |
+ SetFlag(kTruncatingToInt32); |
} |
virtual Representation RequiredInputRepresentation(int index) { |
return Representation::None(); |
} |
- virtual bool CanTruncateToInt32() const { |
- return true; |
- } |
- |
virtual HValue* Canonicalize() { |
if (value()->representation().IsInteger32()) { |
return value(); |
@@ -3154,6 +3152,8 @@ |
virtual HType CalculateInferredType(); |
+ virtual HValue* Canonicalize(); |
+ |
DECLARE_CONCRETE_INSTRUCTION(Add) |
protected: |
@@ -3172,6 +3172,8 @@ |
virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited); |
+ virtual HValue* Canonicalize(); |
+ |
static HInstruction* NewHSub(Zone* zone, |
HValue* context, |
HValue* left, |
@@ -3257,7 +3259,6 @@ |
virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited); |
- |
static HInstruction* NewHDiv(Zone* zone, |
HValue* context, |
HValue* left, |