From 86bcbcdc0b5d10360ad3c2eaaffab586d4061a63 Mon Sep 17 00:00:00 2001 From: "svenpanne@chromium.org" Date: Thu, 11 Oct 2012 14:14:03 +0000 Subject: [PATCH] HChange is only deletable under certain circumstances. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/11092075 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12702 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/hydrogen-instructions.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h index ae769fea0a..f8ec100f2f 100644 --- a/src/hydrogen-instructions.h +++ b/src/hydrogen-instructions.h @@ -1194,7 +1194,7 @@ class HUnaryOperation: public HTemplateInstruction<1> { return reinterpret_cast(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(); + } };