diff options
| author | Carl Shapiro <cshapiro@google.com> | 2010-12-12 17:09:04 -0800 |
|---|---|---|
| committer | Carl Shapiro <cshapiro@google.com> | 2010-12-13 13:51:47 -0800 |
| commit | ef75d4667167f0a82a9d2ee3fe9afeecbc679b82 (patch) | |
| tree | 220d9155636d332fa04320dfd8dbeb405eb5fe22 /vm/compiler/codegen/arm/CodegenDriver.c | |
| parent | 595b1e8db762ab2596661fd7c32c890e20c5a212 (diff) | |
Do not commingle application and zygote references when sweeping.
When garbage objects are identified references to these objects are
passed to a function which, in the case of an application heap,
releases their storage to the mspace or, in the case of a zygote heap,
counts their freed memory without touching the underlying heap.
This freeing process is performed in bulk. To attenuate the cost of
calling and to allow for more efficient merging of adjacent unused
blocks of memory, a buffer is filled with adjacent references to free.
The freeing mechanism is chosen based on the first reference in the
buffer. If the first reference is an application heap object all
objects in the buffer have their storage released to the underlying
mspace. If the first object is a zygote object, only the free space
counting is performed. Assertions check if this assumption is sound.
The previous change to the sweep did not treat the various regions of
the heap specially and therefore allowed the freeing buffer to have
its contained pointers span both heaps. This change restores some of
the functionality which kept references from either heap separate.
Change-Id: Ibc563dcf46ff1681596664f04a2a85a4d29eb5e1
Diffstat (limited to 'vm/compiler/codegen/arm/CodegenDriver.c')
0 files changed, 0 insertions, 0 deletions
