diff options
author | Miguel Garcia <miguelalfredo.garcia@epfl.ch> | 2012-01-20 22:54:03 +0100 |
---|---|---|
committer | Miguel Garcia <miguelalfredo.garcia@epfl.ch> | 2012-01-20 22:54:03 +0100 |
commit | 3320a35298c4beefc2c75633c9e7afba0a924447 (patch) | |
tree | 6f6a7f3d5e50f09d9adf859aaf029d7a7bb97c22 /src/compiler | |
parent | 269d1650041f68bd2f7275cf73cbf5a764df9b5d (diff) | |
download | scala-3320a35298c4beefc2c75633c9e7afba0a924447.tar.gz scala-3320a35298c4beefc2c75633c9e7afba0a924447.tar.bz2 scala-3320a35298c4beefc2c75633c9e7afba0a924447.zip |
fix to avoid loading what shouldn't be loaded
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/opt/Inliners.scala | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala b/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala index b5701f07cb..6937a63962 100644 --- a/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala +++ b/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala @@ -168,7 +168,9 @@ abstract class Inliners extends SubComponent { warn(i.pos, "Could not inline required method %s because %s.".format(msym.originalName.decode, reason)) } - if (shouldLoadImplFor(concreteMethod, receiver)) { + def isAvailable = icodes available concreteMethod.enclClass + + if (!isAvailable && shouldLoadImplFor(concreteMethod, receiver)) { // Until r22824 this line was: // icodes.icode(concreteMethod.enclClass, true) // @@ -177,12 +179,9 @@ abstract class Inliners extends SubComponent { // was the proximate cause for SI-3882: // error: Illegal index: 0 overlaps List((variable par1,LONG)) // error: Illegal index: 0 overlaps List((variable par1,LONG)) - if(!icodes.loaded.contains(concreteMethod.enclClass)) { - icodes.load(concreteMethod.enclClass) - } + icodes.load(concreteMethod.enclClass) } - def isAvailable = icodes available concreteMethod.enclClass def isCandidate = ( isClosureClass(receiver) || concreteMethod.isEffectivelyFinal |