[turbofan] Only mark non-smis as references.
authorbmeurer <bmeurer@chromium.org>
Fri, 16 Jan 2015 10:36:19 +0000 (02:36 -0800)
committerCommit bot <commit-bot@chromium.org>
Fri, 16 Jan 2015 10:36:33 +0000 (10:36 +0000)
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/812033012

Cr-Commit-Position: refs/heads/master@{#26094}

src/compiler/instruction-selector.cc

index 4b07194..e788329 100644 (file)
@@ -701,9 +701,12 @@ void InstructionSelector::VisitNode(Node* node) {
     case IrOpcode::kFloat64Constant:
       return MarkAsDouble(node), VisitConstant(node);
     case IrOpcode::kHeapConstant:
-    case IrOpcode::kNumberConstant:
-      // TODO(turbofan): only mark non-smis as references.
       return MarkAsReference(node), VisitConstant(node);
+    case IrOpcode::kNumberConstant: {
+      double value = OpParameter<double>(node);
+      if (!IsSmiDouble(value)) MarkAsReference(node);
+      return VisitConstant(node);
+    }
     case IrOpcode::kCall:
       return VisitCall(node);
     case IrOpcode::kFrameState: