summaryrefslogtreecommitdiff
path: root/src/reflect
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2013-02-04 11:08:21 +0100
committerEugene Burmako <xeno.by@gmail.com>2013-02-11 19:18:29 +0100
commitdd148de5a875dd8d691ffdd983b7f2b978a148df (patch)
tree8daab30afb78d6f9b80879d1384efa1da1f157b6 /src/reflect
parent4cbb9357c5b0a9bfd58fcb99f76ca320df7a3d5c (diff)
downloadscala-dd148de5a875dd8d691ffdd983b7f2b978a148df.tar.gz
scala-dd148de5a875dd8d691ffdd983b7f2b978a148df.tar.bz2
scala-dd148de5a875dd8d691ffdd983b7f2b978a148df.zip
synchronizes pendingVolatiles
Called from isVolatile, which is called from isStable, which is a part of the public reflection API.
Diffstat (limited to 'src/reflect')
-rw-r--r--src/reflect/scala/reflect/internal/Types.scala4
-rw-r--r--src/reflect/scala/reflect/runtime/SynchronizedSymbols.scala2
2 files changed, 2 insertions, 4 deletions
diff --git a/src/reflect/scala/reflect/internal/Types.scala b/src/reflect/scala/reflect/internal/Types.scala
index 0afbdc56c8..6d91948d66 100644
--- a/src/reflect/scala/reflect/internal/Types.scala
+++ b/src/reflect/scala/reflect/internal/Types.scala
@@ -2066,10 +2066,6 @@ trait Types extends api.Types { self: SymbolTable =>
def apply(value: Constant) = unique(new UniqueConstantType(value))
}
- /* Syncnote: The `volatile` var and `pendingVolatiles` mutable set need not be protected
- * with synchronized, because they are accessed only from isVolatile, which is called only from
- * Typer.
- */
private var volatileRecursions: Int = 0
private val pendingVolatiles = new mutable.HashSet[Symbol]
diff --git a/src/reflect/scala/reflect/runtime/SynchronizedSymbols.scala b/src/reflect/scala/reflect/runtime/SynchronizedSymbols.scala
index 85bd9ff8b6..5a0ac01ac4 100644
--- a/src/reflect/scala/reflect/runtime/SynchronizedSymbols.scala
+++ b/src/reflect/scala/reflect/runtime/SynchronizedSymbols.scala
@@ -61,6 +61,8 @@ private[reflect] trait SynchronizedSymbols extends internal.Symbols { self: Symb
}
}
+ override def isStable: Boolean = gilSynchronized { super.isStable }
+
// ------ creators -------------------------------------------------------------------
override protected def createAbstractTypeSymbol(name: TypeName, pos: Position, newFlags: Long): AbstractTypeSymbol =