diff options
author | James Iry <james.iry@typesafe.com> | 2013-08-28 20:45:49 -0700 |
---|---|---|
committer | James Iry <james.iry@typesafe.com> | 2013-11-06 12:28:20 -0800 |
commit | f27f2d80d759130597b652d6cc9d789f8c472e5a (patch) | |
tree | 8daf89ad1858529a324c8b3900274cc1161999ca /src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala | |
parent | 5d29697365245707af1a037678a7b48b0fef341c (diff) | |
download | scala-f27f2d80d759130597b652d6cc9d789f8c472e5a.tar.gz scala-f27f2d80d759130597b652d6cc9d789f8c472e5a.tar.bz2 scala-f27f2d80d759130597b652d6cc9d789f8c472e5a.zip |
Make GenASM not eliminate loadmodule on static methods.
During development of delayed delambdafy there was a problem where
GenASM would eliminate a loadmodule for all methods defined within that
module even if those methods were static. The result would be broken
byte code that failed verification. This commit fixes that and adds a
test.
Diffstat (limited to 'src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala index 2f6f9620a8..8bbc382251 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala @@ -2370,7 +2370,8 @@ abstract class GenASM extends SubComponent with BytecodeWriters with GenJVMASM { case LOAD_MODULE(module) => // assert(module.isModule, "Expected module: " + module) debuglog("generating LOAD_MODULE for: " + module + " flags: " + module.flagString) - if (clasz.symbol == module.moduleClass && jMethodName != nme.readResolve.toString) { + def inStaticMethod = this.method != null && this.method.symbol.isStaticMember + if (clasz.symbol == module.moduleClass && jMethodName != nme.readResolve.toString && !inStaticMethod) { jmethod.visitVarInsn(Opcodes.ALOAD, 0) } else { jmethod.visitFieldInsn( |