summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/Symbols.scala
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2011-06-29 10:27:23 +0000
committerIulian Dragos <jaguarul@gmail.com>2012-11-06 09:33:33 +0100
commit03aa7fc3904033f8d2f6f14a87574a03553b7c72 (patch)
tree299f1f6ee47bfc401da29a0bb8bb3c3caf5bb743 /src/reflect/scala/reflect/internal/Symbols.scala
parent999918311b7bf764916431485cb11043f1c220ed (diff)
downloadscala-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.scala2
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 {