summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/backend/jvm/GenBCode.scala
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2014-05-10 09:07:36 +0200
committerLukas Rytz <lukas.rytz@gmail.com>2014-05-13 15:17:17 +0200
commit9e1b464d44d2402211b905d6d89cf4004090fe43 (patch)
tree2f140ce75390ba3e5c7fd519d15b76438110cf5a /src/compiler/scala/tools/nsc/backend/jvm/GenBCode.scala
parentea166087ce3fe2731a8b0d767cbbd4c5e5e648c1 (diff)
downloadscala-9e1b464d44d2402211b905d6d89cf4004090fe43.tar.gz
scala-9e1b464d44d2402211b905d6d89cf4004090fe43.tar.bz2
scala-9e1b464d44d2402211b905d6d89cf4004090fe43.zip
Allow tracing methods and classes in GenBCode
Diffstat (limited to 'src/compiler/scala/tools/nsc/backend/jvm/GenBCode.scala')
-rw-r--r--src/compiler/scala/tools/nsc/backend/jvm/GenBCode.scala11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenBCode.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenBCode.scala
index 193100474c..61cf76f524 100644
--- a/src/compiler/scala/tools/nsc/backend/jvm/GenBCode.scala
+++ b/src/compiler/scala/tools/nsc/backend/jvm/GenBCode.scala
@@ -243,6 +243,17 @@ abstract class GenBCode extends BCodeSyncAndTry {
val plainC = SubItem3(plain.name, getByteArray(plain))
val beanC = if (bean == null) null else SubItem3(bean.name, getByteArray(bean))
+ if (AsmUtils.traceSerializedClassEnabled && plain.name.contains(AsmUtils.traceSerializedClassPattern)) {
+ def readClass(bytes: Array[Byte]): asm.tree.ClassNode = {
+ val node = new asm.tree.ClassNode()
+ new asm.ClassReader(bytes).accept(node, 0)
+ node
+ }
+ if (mirrorC != null) AsmUtils.traceClass(readClass(mirrorC.jclassBytes))
+ AsmUtils.traceClass(readClass(plainC.jclassBytes))
+ if (beanC != null) AsmUtils.traceClass(readClass(beanC.jclassBytes))
+ }
+
q3 add Item3(arrivalPos, mirrorC, plainC, beanC, outFolder)
}