summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
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
}