aboutsummaryrefslogtreecommitdiff
path: root/vm/compiler/codegen/arm/CodegenDriver.c
diff options
context:
space:
mode:
authorCarl Shapiro <cshapiro@google.com>2010-12-12 17:09:04 -0800
committerCarl Shapiro <cshapiro@google.com>2010-12-13 13:51:47 -0800
commitef75d4667167f0a82a9d2ee3fe9afeecbc679b82 (patch)
tree220d9155636d332fa04320dfd8dbeb405eb5fe22 /vm/compiler/codegen/arm/CodegenDriver.c
parent595b1e8db762ab2596661fd7c32c890e20c5a212 (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