summaryrefslogtreecommitdiff
path: root/compiler/optimizing/graph_visualizer.cc
diff options
context:
space:
mode:
authorLokesh Gidra <lokeshgidra@google.com>2018-11-09 17:10:47 -0800
committerLokesh Gidra <lokeshgidra@google.com>2018-12-05 01:08:43 -0800
commit519c1c7bb05af22cca3a21cfc78afce5bf9c300c (patch)
treeefc6f5bd69f708a345d1fed80ff9c379519383a4 /compiler/optimizing/graph_visualizer.cc
parent94d4f5fa020561a1f828828dce1edf8fb5d4ab5c (diff)
Cleanup marking logic for non-moving objects
The marking logic for non-moving and large objects currently grays the read barrier state and sets the mark bitmap together. This causes the following complexities: 1) Setting the mark bitmap has to be done atomically as application threads also set the mark bitmap. 2) It requires using a separate false gray stack to handle cases where due to concurrent execution one thread succeeds in graying the object even after the object has been already marked. This can be simplified if non-moving/large objects are treated just like the unevac-space objects are. Marking the object involves testing whether the object is already marked in the bitmap or not. If not, then graying the read barrier state and pushing to the mark stack. Eventually, GC thread sets the mark bit non-atomically while processing the reference. Bug: 119273672 Bug: 112720851 Bug: 119629540 Test: art/test/testrunner/testrunner.py --64 Change-Id: I7050d545d59d5d8b1c90813a982e6f464b15d5e3
Diffstat (limited to 'compiler/optimizing/graph_visualizer.cc')
0 files changed, 0 insertions, 0 deletions