summaryrefslogtreecommitdiff
path: root/compiler/optimizing/graph_visualizer.cc
diff options
context:
space:
mode:
authorAlex Light <allight@google.com>2018-03-22 16:50:10 -0700
committerAlex Light <allight@google.com>2018-03-23 14:19:35 -0700
commit318afe6c3ac1e734adbd769bbf22b8c7e373e80b (patch)
tree2dada0828636c2dc8e40e0f34b2b3f01e6caa0a5 /compiler/optimizing/graph_visualizer.cc
parentba1e9e73c07bffc046f651414db43aeee9953d15 (diff)
Remove unneeded ScopedGCCriticalSections from openjdkjvmti.
We used ScopedGCCriticalSections in many parts of the openjdkjvmti often unnecessarily. We removed a totally unneeded GCCriticalSection that was acquired when modifying the instrumentation listeners. We also removed RequestGCSafeSynchronousCheckpoint and the change to use GcRoots instead. We added RequestGCSafeSynchronousCheckpoint as a way to prevent the GC from running when we are doing some JVMTI operations on other threads. This could interact with running GCs in non-trivial ways, potentially causing deadlocks in some situations. This changes the code to instead use read-barriers and GcRoots to ensure that we do not read data from the wrong gc space. In order for this to work correctly we need to make sure that we are only ever reading the GcRoots from the thread that eventually needs the reference. This required some re-writing of the checkpoint closures since they would often just call AddLocalReference on non-local Thread objects. Changes to Thread::RequestSynchronousCheckpoint and art::Barrier were needed in order to allow this all to work since we needed to ensure that the requesting thread did not suspend as the checkpoint was being run. This is a partial revert of commit 7585b91bfc77b8. Bug: 67838964 Bug: 76003243 Test: use gapid Test: ./test.py --host -j50 Test: ./art/tools/run-libjdwp-tests.sh --mode=host Change-Id: I26d871089829639eccb973cecc315194f7bcf681
Diffstat (limited to 'compiler/optimizing/graph_visualizer.cc')
0 files changed, 0 insertions, 0 deletions