Index: src/hydrogen.cc |
diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
index 6ecd5cc5f297404e084adca640a46e2d4cdc32cf..679c7d483066e8fcf5ca67348f621e9687f2bbee 100644 |
--- a/src/hydrogen.cc |
+++ b/src/hydrogen.cc |
@@ -5391,13 +5391,16 @@ HInstruction* HOptimizedGraphBuilder::BuildStoreNamedField( |
value, STORE_TO_INITIALIZED_ENTRY); |
} |
} else { |
- if (field_access.representation().IsHeapObject()) { |
- BuildCheckHeapObject(value); |
- } |
- |
if (!info->field_maps()->is_empty()) { |
ASSERT(field_access.representation().IsHeapObject()); |
+ BuildCheckHeapObject(value); |
value = Add<HCheckMaps>(value, info->field_maps()); |
+ |
+ // TODO(bmeurer): This is a dirty hack to avoid repeating the smi check |
+ // that was already performed by the HCheckHeapObject above in the |
+ // HStoreNamedField below. We should really do this right instead and |
+ // make Crankshaft aware of Representation::HeapObject(). |
+ field_access = field_access.WithRepresentation(Representation::Tagged()); |
} |
// This is a normal store. |