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); |
} |
}; |