Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index ae769fea0aefbbf8b0621a0967222e126dbf5c9a..f8ec100f2f0a3a7898e6c736b87672c9b1fa226f 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -1194,7 +1194,7 @@ class HUnaryOperation: public HTemplateInstruction<1> { |
return reinterpret_cast<HUnaryOperation*>(value); |
} |
- HValue* value() { return OperandAt(0); } |
+ HValue* value() const { return OperandAt(0); } |
virtual void PrintDataTo(StringStream* stream); |
}; |
@@ -1270,8 +1270,8 @@ class HChange: public HUnaryOperation { |
virtual HType CalculateInferredType(); |
virtual HValue* Canonicalize(); |
- Representation from() { return value()->representation(); } |
- Representation to() { return representation(); } |
+ Representation from() const { return value()->representation(); } |
+ Representation to() const { return representation(); } |
bool deoptimize_on_undefined() const { |
return CheckFlag(kDeoptimizeOnUndefined); |
} |
@@ -1292,7 +1292,9 @@ class HChange: public HUnaryOperation { |
virtual bool DataEquals(HValue* other) { return true; } |
private: |
- virtual bool IsDeletable() const { return true; } |
+ virtual bool IsDeletable() const { |
+ return !from().IsTagged() || value()->type().IsSmi(); |
+ } |
}; |