|
Scala example source code file (AsmUtils.scala)
The AsmUtils.scala Scala example source code/* NSC -- new Scala compiler * Copyright 2005-2014 LAMP/EPFL * @author Martin Odersky */ package scala.tools.nsc.backend.jvm import scala.tools.asm.tree.{ClassNode, MethodNode} import java.io.PrintWriter import scala.tools.asm.util.{TraceClassVisitor, TraceMethodVisitor, Textifier} object AsmUtils { /** * Print the bytecode of methods generated by GenBCode to the standard output. Only methods * whose name contains `traceMethodPattern` are traced. */ final val traceMethodEnabled = false final val traceMethodPattern = "" /** * Print the bytecode of classes generated by GenBCode to the standard output. */ final val traceClassEnabled = false final val traceClassPattern = "" /** * Print the bytedcode of classes as they are serialized by the ASM library. The serialization * performed by `asm.ClassWriter` can change the code generated by GenBCode. For example, it * introduces stack map frames, it computes the maximal stack sizes, and it replaces dead * code by NOPs (see also https://github.com/scala/scala/pull/3726#issuecomment-42861780). */ final val traceSerializedClassEnabled = false final val traceSerializedClassPattern = "" def traceMethod(mnode: MethodNode): Unit = { println(s"Bytecode for method ${mnode.name}") val p = new Textifier val tracer = new TraceMethodVisitor(p) mnode.accept(tracer) val w = new PrintWriter(System.out) p.print(w) w.flush() } def traceClass(cnode: ClassNode): Unit = { println(s"Bytecode for class ${cnode.name}") val w = new PrintWriter(System.out) cnode.accept(new TraceClassVisitor(w)) w.flush() } } Other Scala source code examplesHere is a short list of links related to this Scala AsmUtils.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.