diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2011-06-29 10:27:23 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2012-11-06 09:33:33 +0100 |
commit | 03aa7fc3904033f8d2f6f14a87574a03553b7c72 (patch) | |
tree | 299f1f6ee47bfc401da29a0bb8bb3c3caf5bb743 /src/reflect/scala/reflect/internal/Symbols.scala | |
parent | 999918311b7bf764916431485cb11043f1c220ed (diff) | |
download | scala-03aa7fc3904033f8d2f6f14a87574a03553b7c72.tar.gz scala-03aa7fc3904033f8d2f6f14a87574a03553b7c72.tar.bz2 scala-03aa7fc3904033f8d2f6f14a87574a03553b7c72.zip |
SI-6616 Check that unsafe operations are only called on the presentation compiler thread.
The method that checks the actual constraint is @elidable, expecting it to be used
for nightly builds but stripped-off in release builds. This way we don't lose any
performance, but 'fail-fast' in IDE nightlies.
This assumes that release builds will have at least `-Xelide-below ASSERTION`, but
this pull request does not do that.
Diffstat (limited to 'src/reflect/scala/reflect/internal/Symbols.scala')
-rw-r--r-- | src/reflect/scala/reflect/internal/Symbols.scala | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/internal/Symbols.scala b/src/reflect/scala/reflect/internal/Symbols.scala index a6f156f947..449102dc00 100644 --- a/src/reflect/scala/reflect/internal/Symbols.scala +++ b/src/reflect/scala/reflect/internal/Symbols.scala @@ -1213,6 +1213,7 @@ trait Symbols extends api.Symbols { self: SymbolTable => } val current = phase try { + assertCorrectThread() phase = phaseOf(infos.validFrom) tp.complete(this) } finally { @@ -1283,6 +1284,7 @@ trait Symbols extends api.Symbols { self: SymbolTable => infos = infos.prev if (validTo < curPeriod) { + assertCorrectThread() // adapt any infos that come from previous runs val current = phase try { |