From 6e0b81844bc7b63a971359a9550b1d68c0f63d52 Mon Sep 17 00:00:00 2001 From: Iulian Dragos Date: Tue, 19 Jan 2010 13:21:03 +0000 Subject: Fixed isClosureClass in inliner and removed it ... Fixed isClosureClass in inliner and removed it from CopyPropagation (was dead code). See #2893. --- .../tools/nsc/backend/icode/analysis/CopyPropagation.scala | 14 +------------- src/compiler/scala/tools/nsc/backend/opt/Inliners.scala | 9 +++------ 2 files changed, 4 insertions(+), 19 deletions(-) (limited to 'src') 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 cls 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 m 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 } -- cgit v1.2.3