summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2010-04-13 22:50:37 +0000
committerIulian Dragos <jaguarul@gmail.com>2010-04-13 22:50:37 +0000
commit7d6f1e7e4e8c9024f886f32804d5e341cd14bd11 (patch)
treeb6597ec4ebbb2edcf467bc4ee61dccb4486f5b40 /src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
parent6c213d1c8198423076c111271fd6018a82593087 (diff)
downloadscala-7d6f1e7e4e8c9024f886f32804d5e341cd14bd11.tar.gz
scala-7d6f1e7e4e8c9024f886f32804d5e341cd14bd11.tar.bz2
scala-7d6f1e7e4e8c9024f886f32804d5e341cd14bd11.zip
Fixed deadlocking behavior in actors.
Specialization removed a 'private' modifier on Actor.resumeActor. Mixin did not mix this method in actor implementations, believing it was private. At runtime, an AbstractMethodError was thrown, but swallowed by forkjoin (probably), resulting in an apparent deadlock. It would have been much faster to find and fix if the stacktrace was printed, as it is in Java 1.5. No review.
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala')
-rw-r--r--src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
index 5f18bb84ba..d5d7ca254e 100644
--- a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
+++ b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
@@ -1202,9 +1202,11 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers {
override def transform(tree: Tree): Tree = tree match {
case Select(qual, name) =>
if (tree.symbol.hasFlag(PRIVATE | PROTECTED)) {
- log("changing private flag of " + tree.symbol)
+ log("changing private flag of " + tree.symbol + " privateWithin: " + tree.symbol.privateWithin)
// tree.symbol.resetFlag(PRIVATE).setFlag(PROTECTED)
- tree.symbol.resetFlag(PRIVATE | PROTECTED)
+ tree.symbol.makeNotPrivate(tree.symbol.owner)
+// tree.symbol.resetFlag(PRIVATE | PROTECTED)
+// tree.symbol.privateWithin = NoSymbol
}
super.transform(tree)
@@ -1296,7 +1298,7 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers {
}
/** Create specialized class definitions */
- def implSpecClasses(trees: List[Tree]): List[Tree] = {
+ def implSpecClasses(trees: List[Tree]): List[Tree] = {
val buf = new mutable.ListBuffer[Tree]
for (tree <- trees)
tree match {