summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2010-01-19 13:21:03 +0000
committerIulian Dragos <jaguarul@gmail.com>2010-01-19 13:21:03 +0000
commit6e0b81844bc7b63a971359a9550b1d68c0f63d52 (patch)
treecb197745b40c54ba37fc853859187aa4932d408a /src/compiler
parentefd68171b564ae4ee46149f9ca4329858c1c231e (diff)
downloadscala-6e0b81844bc7b63a971359a9550b1d68c0f63d52.tar.gz
scala-6e0b81844bc7b63a971359a9550b1d68c0f63d52.tar.bz2
scala-6e0b81844bc7b63a971359a9550b1d68c0f63d52.zip
Fixed isClosureClass in inliner and removed it ...
Fixed isClosureClass in inliner and removed it from CopyPropagation (was dead code). See #2893.
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/analysis/CopyPropagation.scala14
-rw-r--r--src/compiler/scala/tools/nsc/backend/opt/Inliners.scala9
2 files changed, 4 insertions, 19 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/analysis/CopyPropagation.scala b/src/compiler/scala/tools/nsc/backend/icode/analysis/CopyPropagation.scala
index 8a65875fbf..5ba5f684f7 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/analysis/CopyPropagation.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/analysis/CopyPropagation.scala
@@ -359,7 +359,7 @@ abstract class CopyPropagation {
if (onInstance) {
val obj = out.stack.drop(method.info.paramTypes.length).head
// if (method.isPrimaryConstructor) {
- if (method.isPrimaryConstructor/* && isClosureClass(method.owner)*/) {
+ if (method.isPrimaryConstructor) {
obj match {
case Record(_, bindings) =>
for (v <- out.stack.take(method.info.paramTypes.length + 1)
@@ -592,18 +592,6 @@ abstract class CopyPropagation {
bindings
}
- /** Is <code>cls</code> a closure class?
- *
- * @param cls ...
- * @return ...
- */
- final def isClosureClass(cls: Symbol): Boolean =
- cls.isFinal &&
- cls.tpe.parents.exists { t =>
- val TypeRef(_, sym, _) = t;
- definitions.FunctionClass exists sym.==
- }
-
/** Is symbol <code>m</code> a pure method?
*
* @param m ...
diff --git a/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala b/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
index 016e70a968..14b168824a 100644
--- a/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
+++ b/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
@@ -544,13 +544,10 @@ abstract class Inliners extends SubComponent {
}
} /* class Inliner */
- /** Is the given class a subtype of a function trait? */
+ /** Is the given class a closure? */
def isClosureClass(cls: Symbol): Boolean = {
- val res = cls.isFinal && cls.hasFlag(Flags.SYNTHETIC) && !cls.isModuleClass &&
- cls.tpe.parents.exists { t =>
- val TypeRef(_, sym, _) = t;
- definitions.FunctionClass exists sym.==
- }
+ val res = (cls.isFinal && cls.hasFlag(Flags.SYNTHETIC)
+ && !cls.isModuleClass && cls.isAnonymousFunction)
res
}