Index: src/hydrogen-instructions.cc |
diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc |
index 05e919688f3b9d738ac04f93d931c14f58a5e2d0..5a44bb93bf217d5951817f525ff7013f6689c6ad 100644 |
--- a/src/hydrogen-instructions.cc |
+++ b/src/hydrogen-instructions.cc |
@@ -1285,12 +1285,12 @@ static HValue* SimplifiedDividendForMathFloorOfDiv(HValue* dividend) { |
HValue* HUnaryMathOperation::Canonicalize() { |
- if (op() == kMathRound) { |
+ if (op() == kMathRound || op() == kMathFloor) { |
HValue* val = value(); |
if (val->IsChange()) val = HChange::cast(val)->value(); |
- // If the input is integer32 then we replace the round instruction |
- // with its input. |
+ // If the input is smi or integer32 then we replace the instruction with its |
+ // input. |
if (val->representation().IsSmiOrInteger32()) { |
if (!val->representation().Equals(representation())) { |
HChange* result = new(block()->zone()) HChange( |
@@ -1305,19 +1305,6 @@ HValue* HUnaryMathOperation::Canonicalize() { |
if (op() == kMathFloor) { |
HValue* val = value(); |
if (val->IsChange()) val = HChange::cast(val)->value(); |
- |
- // If the input is integer32 then we replace the floor instruction |
- // with its input. |
- if (val->representation().IsSmiOrInteger32()) { |
- if (!val->representation().Equals(representation())) { |
- HChange* result = new(block()->zone()) HChange( |
- val, representation(), false, false, false); |
- result->InsertBefore(this); |
- return result; |
- } |
- return val; |
- } |
- |
if (val->IsDiv() && (val->UseCount() == 1)) { |
HDiv* hdiv = HDiv::cast(val); |
HValue* left = hdiv->left(); |