aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/backend
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2017-02-21 17:02:53 +0100
committerFelix Mulder <felix.mulder@gmail.com>2017-03-08 11:19:36 +0100
commit0a70e0710605f123546dad41a0b1a253bfffbcdc (patch)
tree2310ec256665e0934a8b5e3b3eacde7aacf8c7ed /compiler/src/dotty/tools/backend
parent3c4d29eabaa71c30ccc2c7b62517d771d6f9d8f5 (diff)
downloaddotty-0a70e0710605f123546dad41a0b1a253bfffbcdc.tar.gz
dotty-0a70e0710605f123546dad41a0b1a253bfffbcdc.tar.bz2
dotty-0a70e0710605f123546dad41a0b1a253bfffbcdc.zip
Add support for `-XemitTasty`.
It saves tasty output near the class file output to a *.tasty-file.
Diffstat (limited to 'compiler/src/dotty/tools/backend')
-rw-r--r--compiler/src/dotty/tools/backend/jvm/GenBCode.scala22
1 files changed, 15 insertions, 7 deletions
diff --git a/compiler/src/dotty/tools/backend/jvm/GenBCode.scala b/compiler/src/dotty/tools/backend/jvm/GenBCode.scala
index 65dcb6c79..8fd6d1bc0 100644
--- a/compiler/src/dotty/tools/backend/jvm/GenBCode.scala
+++ b/compiler/src/dotty/tools/backend/jvm/GenBCode.scala
@@ -1,19 +1,18 @@
package dotty.tools.backend.jvm
import dotty.tools.dotc.CompilationUnit
-import dotty.tools.dotc.ast.Trees.{ValDef, PackageDef}
+import dotty.tools.dotc.ast.Trees.{PackageDef, ValDef}
import dotty.tools.dotc.ast.tpd
import dotty.tools.dotc.core.Phases.Phase
import dotty.tools.dotc.core.Names.TypeName
import scala.collection.mutable
-import scala.tools.asm.{CustomAttr, ClassVisitor, MethodVisitor, FieldVisitor}
+import scala.tools.asm.{ClassVisitor, CustomAttr, FieldVisitor, MethodVisitor}
import scala.tools.nsc.Settings
import scala.tools.nsc.backend.jvm._
import dotty.tools.dotc
import dotty.tools.dotc.backend.jvm.DottyPrimitives
import dotty.tools.dotc.transform.Erasure
-
import dotty.tools.dotc.interfaces
import java.util.Optional
@@ -27,14 +26,15 @@ import Symbols._
import Denotations._
import Phases._
import java.lang.AssertionError
-import java.io.{ File => JFile }
+import java.io.{FileOutputStream, File => JFile}
+
import scala.tools.asm
import scala.tools.asm.tree._
-import dotty.tools.dotc.util.{Positions, DotClass}
+import dotty.tools.dotc.util.{DotClass, Positions}
import tpd._
import StdNames._
-import scala.reflect.io.{Directory, PlainDirectory, AbstractFile}
+import scala.reflect.io.{AbstractFile, Directory, PlainDirectory}
import scala.tools.nsc.backend.jvm.opt.LocalOpt
class GenBCode extends Phase {
@@ -205,7 +205,15 @@ class GenBCodePipeline(val entryPoints: List[Symbol], val int: DottyBackendInter
if (claszSymbol.isClass) // @DarkDimius is this test needed here?
for (binary <- ctx.compilationUnit.pickled.get(claszSymbol.asClass)) {
val dataAttr = new CustomAttr(nme.TASTYATTR.toString, binary)
- (if (mirrorC ne null) mirrorC else plainC).visitAttribute(dataAttr)
+ val store = if (mirrorC ne null) mirrorC else plainC
+ store.visitAttribute(dataAttr)
+ if (ctx.settings.emitTasty.value) {
+ val outTastyFile = getFileForClassfile(outF, store.name, ".tasty").file
+ val fos = new FileOutputStream(outTastyFile, false)
+ fos.write(binary)
+ fos.close()
+
+ }
}
// -------------- bean info class, if needed --------------