summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2014-01-15 21:07:15 +0300
committerEugene Burmako <xeno.by@gmail.com>2014-01-21 14:12:39 +0300
commit2bd304404ac00939a18a678aa982da9cbb3471a2 (patch)
tree3cbd2f12522953a0cd9945aca7fae02f44ec1b94 /test
parentf142d854d3401728546ae6822662b7a3ad655a58 (diff)
downloadscala-2bd304404ac00939a18a678aa982da9cbb3471a2.tar.gz
scala-2bd304404ac00939a18a678aa982da9cbb3471a2.tar.bz2
scala-2bd304404ac00939a18a678aa982da9cbb3471a2.zip
SI-8131 fixes residual race condition in runtime reflection
Apparently some completers can call setInfo while they’re not yet done, which resets the LOCKED flag, and makes anything that uses LOCKED to track completion unreliable. Unfortunately, that’s exactly the mechanism that was used by runtime reflection to elide locking for symbols that are known to be initialized. This commit fixes the problematic lock elision strategy by introducing an explicit communication channel between SynchronizedSymbol’s and their completers. Now instead of trying hard to infer whether it’s already initialized or not, every symbol gets a volatile field that can be queried to provide necessary information.
Diffstat (limited to 'test')
-rw-r--r--test/files/run/reflection-sync-potpourri.scala (renamed from test/pending/run/reflection-sync-potpourri.scala)0
1 files changed, 0 insertions, 0 deletions
diff --git a/test/pending/run/reflection-sync-potpourri.scala b/test/files/run/reflection-sync-potpourri.scala
index 0c96974df7..0c96974df7 100644
--- a/test/pending/run/reflection-sync-potpourri.scala
+++ b/test/files/run/reflection-sync-potpourri.scala