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