Use HType::NonPrimitive() for non primitive HConstants.
authorbmeurer@chromium.org <bmeurer@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 30 Jan 2014 13:32:05 +0000 (13:32 +0000)
committerbmeurer@chromium.org <bmeurer@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 30 Jan 2014 13:32:05 +0000 (13:32 +0000)
This allows us to use the faster write barrier, omitting the
smi check when storing constant heap objects.

R=hpayer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18947 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/hydrogen-instructions.cc

index 889ebfd05fc6f47a4cb835269ab29ddbd686f02e..73404b94ba561ae47b528cfd3930fe49ffc5e3d1 100644 (file)
@@ -361,6 +361,10 @@ HType HType::TypeFromValue(Handle<Object> value) {
     result = HType::JSObject();
   } else if (value->IsJSArray()) {
     result = HType::JSArray();
+  } else if (value->IsHeapObject()) {
+    // TODO(bmeurer): This is currently a work-around until the new type system
+    // is in place, where we have more precise types.
+    result = HType::NonPrimitive();
   }
   return result;
 }