Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index 4ebb8044241a7aca72581c21a24efcb065cf5e0a..36ecf91228073dc90a06992d22fb71d70f5b47cd 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 |
@@ -1068,8 +1069,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); |
@@ -1085,6 +1089,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_; |
} |
@@ -1098,11 +1103,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_; |
}; |
@@ -2502,6 +2509,7 @@ class HCompare: public HBinaryOperation { |
Representation GetInputRepresentation() const { |
return input_representation_; |
} |
+ |
William Hesse
2011/06/08 14:30:30
Removed.
|
Token::Value token() const { return token_; } |
virtual void PrintDataTo(StringStream* stream); |