summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
diff options
context:
space:
mode:
authorMiguel Garcia <miguelalfredo.garcia@epfl.ch>2012-01-20 22:54:03 +0100
committerMiguel Garcia <miguelalfredo.garcia@epfl.ch>2012-01-20 22:54:03 +0100
commit3320a35298c4beefc2c75633c9e7afba0a924447 (patch)
tree6f6a7f3d5e50f09d9adf859aaf029d7a7bb97c22 /src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
parent269d1650041f68bd2f7275cf73cbf5a764df9b5d (diff)
downloadscala-3320a35298c4beefc2c75633c9e7afba0a924447.tar.gz
scala-3320a35298c4beefc2c75633c9e7afba0a924447.tar.bz2
scala-3320a35298c4beefc2c75633c9e7afba0a924447.zip
fix to avoid loading what shouldn't be loaded
Diffstat (limited to 'src/compiler/scala/tools/nsc/backend/opt/Inliners.scala')
-rw-r--r--src/compiler/scala/tools/nsc/backend/opt/Inliners.scala9
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