aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/backend/jvm/GenBCode.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-04-24 09:59:21 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-04-24 09:59:21 +0200
commit6927c1aa76c19c1232609adb53b17e008ea04030 (patch)
tree13a479296f8fc472714b688637878005de837ee7 /src/dotty/tools/backend/jvm/GenBCode.scala
parente3449e9fdbb3801eb07680e4938bc4c3c77ec3a8 (diff)
downloaddotty-6927c1aa76c19c1232609adb53b17e008ea04030.tar.gz
dotty-6927c1aa76c19c1232609adb53b17e008ea04030.tar.bz2
dotty-6927c1aa76c19c1232609adb53b17e008ea04030.zip
Save TASTY in attribute of classfiles.
Diffstat (limited to 'src/dotty/tools/backend/jvm/GenBCode.scala')
-rw-r--r--src/dotty/tools/backend/jvm/GenBCode.scala12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/dotty/tools/backend/jvm/GenBCode.scala b/src/dotty/tools/backend/jvm/GenBCode.scala
index a53e910ae..8312a72e7 100644
--- a/src/dotty/tools/backend/jvm/GenBCode.scala
+++ b/src/dotty/tools/backend/jvm/GenBCode.scala
@@ -6,7 +6,7 @@ import dotty.tools.dotc.ast.tpd
import dotty.tools.dotc.core.Phases.Phase
import scala.collection.mutable
-import scala.tools.asm.{ClassVisitor, MethodVisitor, FieldVisitor}
+import scala.tools.asm.{CustomAttr, ClassVisitor, MethodVisitor, FieldVisitor}
import scala.tools.nsc.Settings
import scala.tools.nsc.backend.jvm._
import dotty.tools.dotc
@@ -27,6 +27,7 @@ import scala.tools.asm
import scala.tools.asm.tree._
import dotty.tools.dotc.util.{Positions, DotClass}
import tpd._
+import StdNames._
import scala.tools.nsc.backend.jvm.opt.LocalOpt
@@ -174,6 +175,15 @@ class GenBCodePipeline(val entryPoints: List[Symbol], val int: DottyBackendInter
val outF = if (needsOutFolder) getOutFolder(claszSymbol, pcb.thisName) else null;
val plainC = pcb.cnode
+ if ((!claszSymbol.companionClass.exists) || !claszSymbol.is(Flags.Module)) {
+ // generate TASTY on class if it is there, or on module if it has no companion class
+
+ val binary = ctx.compilationUnit.pickler.assembleParts()
+ val dataAttr = new CustomAttr(nme.DottyTASTYATTR.toString, binary)
+ plainC.visitAttribute(dataAttr)
+ }
+
+
// -------------- bean info class, if needed --------------
val beanC =
if (claszSymbol hasAnnotation int.BeanInfoAttr) {