summaryrefslogtreecommitdiff
path: root/disassembler/disassembler.h
diff options
context:
space:
mode:
author Mathieu Chartier <mathieuc@google.com> 2013-08-09 11:14:04 -0700
committer Mathieu Chartier <mathieuc@google.com> 2013-08-16 16:30:59 -0700
commit94c32c5f01c7d44781317bf23933ed0a5bc4b796 (patch)
treea59e9dcf43671ac624e3db2ed88e5ebd4a65ce9d /disassembler/disassembler.h
parentd2b0f33cf01601f040494f4f882e60f70b527930 (diff)
More parallel GC, rewritten parallel mark stack processing.
Card scanning may now be done in parallel. This speeds up sticky and reduces pause times for all GC types. Speedup on my mako (ritz perf): Average pause time for sticky GC (~250 samples): Without parallel cards scanning enabled: 2.524904215ms Parallel card scanning (num_gc_threads_): 1.552123552ms Throughput (~250 samples): Sticky GC throughput with parallel card scanning: 69MB/s Sticky GC throughput without parallel card scanning: 51MB/s Rewrote the mark stack processing to be LIFO and use a prefetch queue like the non parallel version. Cleaned up some of the logcat printing for the activity manager process state listening. Added unlikely hints to object scanning since arrays and classes are scanned much less often than normal objects. Fixed a bug where the number of GC threads was clamped to 1 due to a bool instead of a size_t. Fixed a race condition when we added references to the reference queues. Sharded the reference queue lock into one lock for each reference type (weak, soft, phatom, finalizer). Changed timing splits to be different for processing gray objects with and without mutators paused since sticky GC does both. Mask out the class bit when visiting fields as an optimization, this is valid since classes are held live by the class linker. Partially completed: Parallel recursive mark + finger. Bug: 10245302 Bug: 9969166 Bug: 9986532 Bug: 9961698 Change-Id: I142d09718c4609b7c2387cb28f517a6983c73288
Diffstat (limited to 'disassembler/disassembler.h')
0 files changed, 0 insertions, 0 deletions