diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2010-01-19 13:21:03 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2010-01-19 13:21:03 +0000 |
commit | 6e0b81844bc7b63a971359a9550b1d68c0f63d52 (patch) | |
tree | cb197745b40c54ba37fc853859187aa4932d408a | |
parent | efd68171b564ae4ee46149f9ca4329858c1c231e (diff) | |
download | scala-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.
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/icode/analysis/CopyPropagation.scala | 14 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/opt/Inliners.scala | 9 |
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 } |