OSDN Git Service

Avoid CAS for marking region space bitmap for baker
authorMathieu Chartier <mathieuc@google.com>
Tue, 23 Aug 2016 20:27:53 +0000 (13:27 -0700)
committerMathieu Chartier <mathieuc@google.com>
Wed, 24 Aug 2016 20:34:32 +0000 (13:34 -0700)
commitc381c36aacf977f7e314e6a91e47b31b04639f62
tree15d70c007bf5523c47337a4ca7f0af0a1100b03e
parent47ec97259fefc03978517814a14e07ea4c09d472
Avoid CAS for marking region space bitmap for baker

Only have the GC thread mark it. This occurs when popping from the
mark stack. The race where an object may be pushed to the mark
stack twice is handled by not scanning if it is already marked.

Also avoid checking is_active when marking from the GC.

EAAC: 1263 -> 1253 (average of 30 runs)
GC time: 7.21s -> 6.83s (average of 18 runs)

Timings on 960 mhz N6P.

Bug: 12687968

Change-Id: I47e98c3e258829d2ba0babd803a219c82a36168c
Test: test-art-host, debug N6P booting with baker CC.
runtime/gc/accounting/space_bitmap-inl.h
runtime/gc/accounting/space_bitmap.cc
runtime/gc/accounting/space_bitmap.h
runtime/gc/collector/concurrent_copying-inl.h
runtime/gc/collector/concurrent_copying.cc
runtime/gc/collector/concurrent_copying.h
runtime/mirror/object-inl.h
runtime/mirror/object.h