Index: src/code-stubs-hydrogen.cc |
diff --git a/src/code-stubs-hydrogen.cc b/src/code-stubs-hydrogen.cc |
index 1a6ae007ba6278701313b8e68bc29e229d92dd12..3e00f15bc1a5553f2274445b43c83a4b224acc30 100644 |
--- a/src/code-stubs-hydrogen.cc |
+++ b/src/code-stubs-hydrogen.cc |
@@ -474,14 +474,27 @@ HValue* CodeStubGraphBuilder<CreateAllocationSiteStub>::BuildCodeStub() { |
HObjectAccess::ForAllocationSiteTransitionInfo(), |
initial_elements_kind); |
+ // Store an empty fixed array for the code dependency. |
+ HConstant* empty_fixed_array = |
+ Add<HConstant>(isolate()->factory()->empty_fixed_array()); |
+ ASSERT(!isolate()->heap()->InNewSpace( |
+ isolate()->heap()->empty_fixed_array())); |
Michael Starzinger
2013/09/19 13:56:17
nit: Let's drop this assert, see comment below.
mvstanton
2013/09/19 14:06:11
Done.
|
+ HStoreNamedField* store = Add<HStoreNamedField>( |
+ object, |
+ HObjectAccess::ForAllocationSiteDependentCode(), |
+ empty_fixed_array); |
+ // SkipWriteBarrier because we just created this object, and because |
+ // empty_fixed_array won't be in new space |
+ store->SkipWriteBarrier(); |
Michael Starzinger
2013/09/19 13:56:17
We should just add the empty fixed array to the li
mvstanton
2013/09/19 14:06:11
Right on, done!
|
+ |
// Link the object to the allocation site list |
HValue* site_list = Add<HConstant>( |
ExternalReference::allocation_sites_list_address(isolate())); |
HValue* site = Add<HLoadNamedField>(site_list, |
HObjectAccess::ForAllocationSiteList()); |
- HStoreNamedField* store = |
- Add<HStoreNamedField>(object, HObjectAccess::ForAllocationSiteWeakNext(), |
- site); |
+ store = Add<HStoreNamedField>(object, |
+ HObjectAccess::ForAllocationSiteWeakNext(), |
+ site); |
store->SkipWriteBarrier(); |
Add<HStoreNamedField>(site_list, HObjectAccess::ForAllocationSiteList(), |
object); |