Index: src/hydrogen-instructions.h |
=================================================================== |
--- src/hydrogen-instructions.h (revision 7047) |
+++ src/hydrogen-instructions.h (working copy) |
@@ -190,81 +190,48 @@ |
class Range: public ZoneObject { |
public: |
- Range() : lower_(kMinInt), |
- upper_(kMaxInt), |
- next_(NULL), |
- can_be_minus_zero_(false) { } |
+ Range() |
+ : lower_(kMinInt), |
+ upper_(kMaxInt), |
+ next_(NULL), |
+ can_be_minus_zero_(false) { } |
Range(int32_t lower, int32_t upper) |
- : lower_(lower), upper_(upper), next_(NULL), can_be_minus_zero_(false) { } |
+ : lower_(lower), |
+ upper_(upper), |
+ next_(NULL), |
+ can_be_minus_zero_(false) { } |
- bool IsInSmiRange() const { |
- return lower_ >= Smi::kMinValue && upper_ <= Smi::kMaxValue; |
- } |
- void KeepOrder(); |
- void Verify() const; |
int32_t upper() const { return upper_; } |
int32_t lower() const { return lower_; } |
Range* next() const { return next_; } |
Range* CopyClearLower() const { return new Range(kMinInt, upper_); } |
Range* CopyClearUpper() const { return new Range(lower_, kMaxInt); } |
- void ClearLower() { lower_ = kMinInt; } |
- void ClearUpper() { upper_ = kMaxInt; } |
Range* Copy() const { return new Range(lower_, upper_); } |
- bool IsMostGeneric() const { return lower_ == kMinInt && upper_ == kMaxInt; } |
int32_t Mask() const; |
void set_can_be_minus_zero(bool b) { can_be_minus_zero_ = b; } |
bool CanBeMinusZero() const { return CanBeZero() && can_be_minus_zero_; } |
bool CanBeZero() const { return upper_ >= 0 && lower_ <= 0; } |
bool CanBeNegative() const { return lower_ < 0; } |
- bool Includes(int value) const { |
- return lower_ <= value && upper_ >= value; |
+ bool Includes(int value) const { return lower_ <= value && upper_ >= value; } |
+ bool IsMostGeneric() const { return lower_ == kMinInt && upper_ == kMaxInt; } |
+ bool IsInSmiRange() const { |
+ return lower_ >= Smi::kMinValue && upper_ <= Smi::kMaxValue; |
} |
+ void KeepOrder(); |
+ void Verify() const; |
- void Sar(int32_t value) { |
- int32_t bits = value & 0x1F; |
- lower_ = lower_ >> bits; |
- upper_ = upper_ >> bits; |
- set_can_be_minus_zero(false); |
- } |
- |
- void Shl(int32_t value) { |
- int32_t bits = value & 0x1F; |
- int old_lower = lower_; |
- int old_upper = upper_; |
- lower_ = lower_ << bits; |
- upper_ = upper_ << bits; |
- if (old_lower != lower_ >> bits || old_upper != upper_ >> bits) { |
- upper_ = kMaxInt; |
- lower_ = kMinInt; |
- } |
- set_can_be_minus_zero(false); |
- } |
- |
- // Adds a constant to the lower and upper bound of the range. |
- void AddConstant(int32_t value); |
- |
void StackUpon(Range* other) { |
Intersect(other); |
next_ = other; |
} |
- void Intersect(Range* other) { |
- upper_ = Min(upper_, other->upper_); |
- lower_ = Max(lower_, other->lower_); |
- bool b = CanBeMinusZero() && other->CanBeMinusZero(); |
- set_can_be_minus_zero(b); |
- } |
+ void Intersect(Range* other); |
+ void Union(Range* other); |
- void Union(Range* other) { |
- upper_ = Max(upper_, other->upper_); |
- lower_ = Min(lower_, other->lower_); |
- bool b = CanBeMinusZero() || other->CanBeMinusZero(); |
- set_can_be_minus_zero(b); |
- } |
- |
- // Compute a new result range and return true, if the operation |
- // can overflow. |
+ void AddConstant(int32_t value); |
+ void Sar(int32_t value); |
+ void Shl(int32_t value); |
bool AddAndCheckOverflow(Range* other); |
bool SubAndCheckOverflow(Range* other); |
bool MulAndCheckOverflow(Range* other); |