Index: src/ia32/lithium-ia32.cc |
diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc |
index 1fd0f49d3083bd90a5f05a5ef6005985037f9bf2..28c4d2cb3bc3fcdf88cf9daebc9a3f31be5459b5 100644 |
--- a/src/ia32/lithium-ia32.cc |
+++ b/src/ia32/lithium-ia32.cc |
@@ -2108,7 +2108,9 @@ LInstruction* LChunkBuilder::DoReturn(HReturn* instr) { |
LInstruction* LChunkBuilder::DoConstant(HConstant* instr) { |
Representation r = instr->representation(); |
- if (r.IsInteger32()) { |
+ if (r.IsSmi()) { |
+ return DefineAsRegister(new(zone()) LConstantS); |
+ } else if (r.IsInteger32()) { |
return DefineAsRegister(new(zone()) LConstantI); |
} else if (r.IsDouble()) { |
double value = instr->DoubleValue(); |
@@ -2119,7 +2121,7 @@ LInstruction* LChunkBuilder::DoConstant(HConstant* instr) { |
} else { |
return DefineX87TOS(new(zone()) LConstantD(NULL)); |
} |
- } else if (r.IsSmiOrTagged()) { |
+ } else if (r.IsTagged()) { |
return DefineAsRegister(new(zone()) LConstantT); |
} else { |
UNREACHABLE(); |