| Index: src/hydrogen-instructions.h
|
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
|
| index a0df009fb1faae6d2ac3e1bf48eceb3d5aac4757..c05069ea91f76fc6fcd51f0c5b5868f14ebdbb78 100644
|
| --- a/src/hydrogen-instructions.h
|
| +++ b/src/hydrogen-instructions.h
|
| @@ -236,10 +236,14 @@ class Range: public ZoneObject {
|
| 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); }
|
| - Range* Copy() const {
|
| - Range* result = new Range(lower_, upper_);
|
| + Range* CopyClearLower(Zone* zone) const {
|
| + return new(zone) Range(kMinInt, upper_);
|
| + }
|
| + Range* CopyClearUpper(Zone* zone) const {
|
| + return new(zone) Range(lower_, kMaxInt);
|
| + }
|
| + Range* Copy(Zone* zone) const {
|
| + Range* result = new(zone) Range(lower_, upper_);
|
| result->set_can_be_minus_zero(CanBeMinusZero());
|
| return result;
|
| }
|
| @@ -683,9 +687,9 @@ class HValue: public ZoneObject {
|
|
|
| Range* range() const { return range_; }
|
| bool HasRange() const { return range_ != NULL; }
|
| - void AddNewRange(Range* r);
|
| + void AddNewRange(Range* r, Zone* zone);
|
| void RemoveLastAddedRange();
|
| - void ComputeInitialRange();
|
| + void ComputeInitialRange(Zone* zone);
|
|
|
| // Representation helpers.
|
| virtual Representation RequiredInputRepresentation(int index) = 0;
|
| @@ -730,7 +734,7 @@ class HValue: public ZoneObject {
|
| return false;
|
| }
|
| virtual void RepresentationChanged(Representation to) { }
|
| - virtual Range* InferRange();
|
| + virtual Range* InferRange(Zone* zone);
|
| virtual void DeleteFromGraph() = 0;
|
| virtual void InternalSetOperandAt(int index, HValue* value) = 0;
|
| void clear_block() {
|
| @@ -1208,7 +1212,7 @@ class HChange: public HUnaryOperation {
|
| return from();
|
| }
|
|
|
| - virtual Range* InferRange();
|
| + virtual Range* InferRange(Zone* zone);
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
|
|
| @@ -2299,7 +2303,7 @@ class HPhi: public HValue {
|
| return Representation::None();
|
| }
|
|
|
| - virtual Range* InferRange();
|
| + virtual Range* InferRange(Zone* zone);
|
| virtual Representation RequiredInputRepresentation(int index) {
|
| return representation();
|
| }
|
| @@ -2477,7 +2481,7 @@ class HConstant: public HTemplateInstruction<0> {
|
| DECLARE_CONCRETE_INSTRUCTION(Constant)
|
|
|
| protected:
|
| - virtual Range* InferRange();
|
| + virtual Range* InferRange(Zone* zone);
|
|
|
| virtual bool DataEquals(HValue* other) {
|
| HConstant* other_constant = HConstant::cast(other);
|
| @@ -3155,7 +3159,7 @@ class HAdd: public HArithmeticBinaryOperation {
|
| protected:
|
| virtual bool DataEquals(HValue* other) { return true; }
|
|
|
| - virtual Range* InferRange();
|
| + virtual Range* InferRange(Zone* zone);
|
| };
|
|
|
|
|
| @@ -3178,7 +3182,7 @@ class HSub: public HArithmeticBinaryOperation {
|
| protected:
|
| virtual bool DataEquals(HValue* other) { return true; }
|
|
|
| - virtual Range* InferRange();
|
| + virtual Range* InferRange(Zone* zone);
|
| };
|
|
|
|
|
| @@ -3206,7 +3210,7 @@ class HMul: public HArithmeticBinaryOperation {
|
| protected:
|
| virtual bool DataEquals(HValue* other) { return true; }
|
|
|
| - virtual Range* InferRange();
|
| + virtual Range* InferRange(Zone* zone);
|
| };
|
|
|
|
|
| @@ -3239,7 +3243,7 @@ class HMod: public HArithmeticBinaryOperation {
|
| protected:
|
| virtual bool DataEquals(HValue* other) { return true; }
|
|
|
| - virtual Range* InferRange();
|
| + virtual Range* InferRange(Zone* zone);
|
| };
|
|
|
|
|
| @@ -3264,7 +3268,7 @@ class HDiv: public HArithmeticBinaryOperation {
|
| protected:
|
| virtual bool DataEquals(HValue* other) { return true; }
|
|
|
| - virtual Range* InferRange();
|
| + virtual Range* InferRange(Zone* zone);
|
| };
|
|
|
|
|
| @@ -3296,7 +3300,7 @@ class HBitwise: public HBitwiseBinaryOperation {
|
| return op() == HBitwise::cast(other)->op();
|
| }
|
|
|
| - virtual Range* InferRange();
|
| + virtual Range* InferRange(Zone* zone);
|
|
|
| private:
|
| Token::Value op_;
|
| @@ -3308,7 +3312,7 @@ class HShl: public HBitwiseBinaryOperation {
|
| HShl(HValue* context, HValue* left, HValue* right)
|
| : HBitwiseBinaryOperation(context, left, right) { }
|
|
|
| - virtual Range* InferRange();
|
| + virtual Range* InferRange(Zone* zone);
|
|
|
| static HInstruction* NewHShl(Zone* zone,
|
| HValue* context,
|
| @@ -3327,7 +3331,7 @@ class HShr: public HBitwiseBinaryOperation {
|
| HShr(HValue* context, HValue* left, HValue* right)
|
| : HBitwiseBinaryOperation(context, left, right) { }
|
|
|
| - virtual Range* InferRange();
|
| + virtual Range* InferRange(Zone* zone);
|
|
|
| static HInstruction* NewHShr(Zone* zone,
|
| HValue* context,
|
| @@ -3346,7 +3350,7 @@ class HSar: public HBitwiseBinaryOperation {
|
| HSar(HValue* context, HValue* left, HValue* right)
|
| : HBitwiseBinaryOperation(context, left, right) { }
|
|
|
| - virtual Range* InferRange();
|
| + virtual Range* InferRange(Zone* zone);
|
|
|
| static HInstruction* NewHSar(Zone* zone,
|
| HValue* context,
|
| @@ -3936,7 +3940,7 @@ class HLoadKeyedSpecializedArrayElement: public HTemplateInstruction<2> {
|
| HValue* key() { return OperandAt(1); }
|
| ElementsKind elements_kind() const { return elements_kind_; }
|
|
|
| - virtual Range* InferRange();
|
| + virtual Range* InferRange(Zone* zone);
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(LoadKeyedSpecializedArrayElement)
|
|
|
| @@ -4304,8 +4308,8 @@ class HStringCharCodeAt: public HTemplateInstruction<3> {
|
| protected:
|
| virtual bool DataEquals(HValue* other) { return true; }
|
|
|
| - virtual Range* InferRange() {
|
| - return new Range(0, String::kMaxUC16CharCode);
|
| + virtual Range* InferRange(Zone* zone) {
|
| + return new(zone) Range(0, String::kMaxUC16CharCode);
|
| }
|
| };
|
|
|
| @@ -4357,8 +4361,8 @@ class HStringLength: public HUnaryOperation {
|
| protected:
|
| virtual bool DataEquals(HValue* other) { return true; }
|
|
|
| - virtual Range* InferRange() {
|
| - return new Range(0, String::kMaxLength);
|
| + virtual Range* InferRange(Zone* zone) {
|
| + return new(zone) Range(0, String::kMaxLength);
|
| }
|
| };
|
|
|
|
|