Lines Matching refs:Range
178 int32_t Range::Mask() const {
191 void Range::AddConstant(int32_t value) {
203 void Range::Intersect(Range* other) {
211 void Range::Union(Range* other) {
219 void Range::CombinedMax(Range* other) {
226 void Range::CombinedMin(Range* other) {
233 void Range::Sar(int32_t value) {
241 void Range::Shl(int32_t value) {
255 bool Range::AddAndCheckOverflow(const Representation& r, Range* other) {
267 bool Range::SubAndCheckOverflow(const Representation& r, Range* other) {
279 void Range::KeepOrder() {
289 void Range::Verify() const {
295 bool Range::MulAndCheckOverflow(const Representation& r, Range* other) {
594 void HValue::AddNewRange(Range* r, Zone* zone) {
596 if (!HasRange()) range_ = new(zone) Range();
1042 Range* HBoundsCheck::InferRange(Zone* zone) {
1045 int upper = length()->range()->upper() - (allow_equality() ? 0 : 1);
1048 Range* result = new(zone) Range(lower, upper);
1050 result->Intersect(index()->range());
1226 Range* HUnaryMathOperation::InferRange(Zone* zone) {
1228 if (op() == kMathClz32) return new(zone) Range(0, 32);
1231 int upper = value()->range()->upper();
1232 int lower = value()->range()->lower();
1233 bool spans_zero = value()->range()->CanBeZero();
1238 Range* result =
1239 new(zone) Range(spans_zero ? 0 : Min(abs_lower, abs_upper),
1757 Range* HValue::InferRange(Zone* zone) {
1758 Range* result;
1760 result = new(zone) Range(Smi::kMinValue, Smi::kMaxValue);
1763 result = new(zone) Range();
1765 // TODO(jkummerow): The range cannot be minus zero when the upper type
1772 Range* HChange::InferRange(Zone* zone) {
1773 Range* input_range = value()->range();
1788 // The Range class can't express upper bounds in the (kMaxInt, kMaxUint32]
1792 Range* result = (input_range != NULL)
1803 Range* HConstant::InferRange(Zone* zone) {
1805 Range* result = new(zone) Range(int32_value_, int32_value_);
1816 Range* HPhi::InferRange(Zone* zone) {
1820 Range* range = r.IsSmi()
1821 ? new(zone) Range(Smi::kMinValue, Smi::kMaxValue)
1822 : new(zone) Range(kMinInt, kMaxInt);
1823 return range;
1825 Range* range = OperandAt(0)->range()->Copy(zone);
1827 range->Union(OperandAt(i)->range());
1829 return range;
1837 Range* HAdd::InferRange(Zone* zone) {
1840 Range* a = left()->range();
1841 Range* b = right()->range();
1842 Range* res = a->Copy(zone);
1858 Range* HSub::InferRange(Zone* zone) {
1861 Range* a = left()->range();
1862 Range* b = right()->range();
1863 Range* res = a->Copy(zone);
1879 Range* HMul::InferRange(Zone* zone) {
1882 Range* a = left()->range();
1883 Range* b = right()->range();
1884 Range* res = a->Copy(zone);
1905 Range* HDiv::InferRange(Zone* zone) {
1907 Range* a = left()->range();
1908 Range* b = right()->range();
1909 Range* result = new(zone) Range();
1927 Range* HMathFloorOfDiv::InferRange(Zone* zone) {
1929 Range* a = left()->range();
1930 Range* b = right()->range();
1931 Range* result = new(zone) Range();
1966 Range* HMod::InferRange(Zone* zone) {
1968 Range* a = left()->range();
1969 Range* b = right()->range();
1976 Range* result = new(zone) Range(left_can_be_negative ? -positive_bound : 0,
2446 Range* HMathMinMax::InferRange(Zone* zone) {
2448 Range* a = left()->range();
2449 Range* b = right()->range();
2450 Range* res = a->Copy(zone);
2780 // It's possible to create a constant with a value in Smi-range but stored
2806 // It's possible to create a constant with a value in Smi-range but stored
3073 Range* HBitwise::InferRange(Zone* zone) {
3078 // If the range can be negative, the minimum int is a negative number with
3082 int64_t left_upper = left()->range()->upper();
3083 int64_t left_lower = left()->range()->lower();
3084 int64_t right_upper = right()->range()->upper();
3085 int64_t right_lower = right()->range()->lower();
3098 int32_t min = (left()->range()->CanBeNegative() ||
3099 right()->range()->CanBeNegative())
3101 return new(zone) Range(min, static_cast<int32_t>(limit - 1));
3103 Range* result = HValue::InferRange(zone);
3108 int32_t left_mask = (left()->range() != NULL)
3109 ? left()->range()->Mask()
3111 int32_t right_mask = (right()->range() != NULL)
3112 ? right()->range()->Mask()
3117 if (result_mask >= 0) return new(zone) Range(0, result_mask);
3119 Range* result = HValue::InferRange(zone);
3125 Range* HSar::InferRange(Zone* zone) {
3129 Range* result = (left()->range() != NULL)
3130 ? left()->range()->Copy(zone)
3131 : new(zone) Range();
3140 Range* HShr::InferRange(Zone* zone) {
3145 if (left()->range()->CanBeNegative()) {
3148 ? new(zone) Range(0,
3150 : new(zone) Range();
3153 Range* result = (left()->range() != NULL)
3154 ? left()->range()->Copy(zone)
3155 : new(zone) Range();
3165 Range* HShl::InferRange(Zone* zone) {
3169 Range* result = (left()->range() != NULL)
3170 ? left()->range()->Copy(zone)
3171 : new(zone) Range();
3180 Range* HLoadNamedField::InferRange(Zone* zone) {
3182 return new(zone) Range(kMinInt8, kMaxInt8);
3185 return new(zone) Range(kMinUInt8, kMaxUInt8);
3188 return new(zone) Range(kMinInt16, kMaxInt16);
3191 return new(zone) Range(kMinUInt16, kMaxUInt16);
3194 return new(zone) Range(0, String::kMaxLength);
3200 Range* HLoadKeyed::InferRange(Zone* zone) {
3203 return new(zone) Range(kMinInt8, kMaxInt8);
3206 return new(zone) Range(kMinUInt8, kMaxUInt8);
3208 return new(zone) Range(kMinInt16, kMaxInt16);
3210 return new(zone) Range(kMinUInt16, kMaxUInt16);