Index: src/crankshaft/hydrogen-instructions.h |
diff --git a/src/crankshaft/hydrogen-instructions.h b/src/crankshaft/hydrogen-instructions.h |
index d4026918f3ac256598a663497d8fc645b8322604..83dc59755ba9786670e0396fc5d45f04bbc9466b 100644 |
--- a/src/crankshaft/hydrogen-instructions.h |
+++ b/src/crankshaft/hydrogen-instructions.h |
@@ -5692,6 +5692,15 @@ |
if (value->IsConstant() && HConstant::cast(value)->NotInNewSpace()) { |
return false; |
} |
+ // Stores to old space allocations require no write barriers if the value is |
+ // an old space allocation. |
+ while (value->IsInnerAllocatedObject()) { |
+ value = HInnerAllocatedObject::cast(value)->base_object(); |
+ } |
+ if (value->IsAllocate() && |
+ !HAllocate::cast(value)->IsNewSpaceAllocation()) { |
+ return false; |
+ } |
} |
return true; |
} |