Index: src/x64/lithium-x64.cc |
diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc |
index 78c7b9c8d60836ea51e2d591efd676fd7da5c202..af4d96a290db9d4fe1de031560c8b632c354533d 100644 |
--- a/src/x64/lithium-x64.cc |
+++ b/src/x64/lithium-x64.cc |
@@ -1801,10 +1801,14 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) { |
Representation from = instr->from(); |
Representation to = instr->to(); |
if (from.IsSmi()) { |
- if (to.IsTagged()) { |
+ if (to.IsSmiOrTagged()) { |
LOperand* value = UseRegister(instr->value()); |
return DefineSameAsFirst(new(zone()) LDummyUse(value)); |
} |
+ if (to.IsInteger32()) { |
+ LOperand* value = UseRegister(instr->value()); |
+ return DefineSameAsFirst(new(zone()) LSmiUntag(value, false)); |
+ } |
from = Representation::Tagged(); |
} |
// Only mark conversions that might need to allocate as calling rather than |