Chromium Code Reviews| Index: src/hydrogen-instructions.h | 
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h | 
| index ae769fea0aefbbf8b0621a0967222e126dbf5c9a..828b9ed6be71bb20e24920d177d8a5e7a7dba808 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() || (!to().IsDouble() && value()->type().IsSmi()); | 
| 
 
Michael Starzinger
2012/10/11 13:48:43
Why do we check that Smi->Double is not deleted? S
 
Sven Panne
2012/10/11 14:11:50
Yep, it seems that the !to().IsDouble() part can b
 
 | 
| + } | 
| }; |