OSDN Git Service

Don't re-read referent in ReferenceProcessor::GetReferent
authorMathieu Chartier <mathieuc@google.com>
Tue, 13 Dec 2016 19:46:28 +0000 (11:46 -0800)
committerMathieu Chartier <mathieuc@google.com>
Tue, 13 Dec 2016 20:52:41 +0000 (12:52 -0800)
commit36994ba006c18c1933815cc0c4c036df086e6814
tree013dfafba31b6d07f4880873f378475a1ce5975f
parent017c55c120a40612364448826692cc7d402eb913
Don't re-read referent in ReferenceProcessor::GetReferent

Re-reading has the issue that it may read a null value after already
having done the null check. Using a cached value prevents this from
happening and causing DCHECK failures.

Added a related stress test.

Bug: 33569625
Bug: 33389022

Test: test-art-host

Change-Id: Ic42d540e035d41ac6e5b01762f9510cd6632b28c
runtime/gc/reference_processor.cc
test/153-reference-stress/expected.txt [new file with mode: 0644]
test/153-reference-stress/info.txt [new file with mode: 0644]
test/153-reference-stress/src/Main.java [new file with mode: 0644]