Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index 2e7561c75d16de70ed1ec8d7d3ebaccde52bdb04..053752a9b67d496f921579264715fe4a305aa14c 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -487,6 +487,7 @@ class HValue: public ZoneObject { |
kCanOverflow, |
kBailoutOnMinusZero, |
kCanBeDivByZero, |
+ kDeoptimizeOnUndefined, |
kIsArguments, |
kTruncatingToInt32, |
kLastFlag = kTruncatingToInt32 |
@@ -1067,8 +1068,11 @@ class HChange: public HUnaryOperation { |
HChange(HValue* value, |
Representation from, |
Representation to, |
- bool is_truncating) |
- : HUnaryOperation(value), from_(from) { |
+ bool is_truncating, |
+ bool deoptimize_on_undefined) |
+ : HUnaryOperation(value), |
+ from_(from), |
+ deoptimize_on_undefined_(deoptimize_on_undefined) { |
ASSERT(!from.IsNone() && !to.IsNone()); |
ASSERT(!from.Equals(to)); |
set_representation(to); |
@@ -1084,6 +1088,7 @@ class HChange: public HUnaryOperation { |
Representation from() const { return from_; } |
Representation to() const { return representation(); } |
+ bool deoptimize_on_undefined() const { return deoptimize_on_undefined_; } |
virtual Representation RequiredInputRepresentation(int index) const { |
return from_; |
} |
@@ -1097,11 +1102,13 @@ class HChange: public HUnaryOperation { |
if (!other->IsChange()) return false; |
HChange* change = HChange::cast(other); |
return value() == change->value() |
- && to().Equals(change->to()); |
+ && to().Equals(change->to()) |
+ && deoptimize_on_undefined() == change->deoptimize_on_undefined(); |
} |
private: |
Representation from_; |
+ bool deoptimize_on_undefined_; |
}; |