scala如何生成字节码?使用像ASM这样的库,还是直接写二进制?
我想知道
Scala如何生成字节码,它是否使用像ASM这样的库?或者只是写二进制到.class文件来执行性能?
解决方法
从2.10开始,Scala编译器使用ASM 4发出字节码,支持-target:jvm-1.5,-target:jvm-1.6和-target:jvm-1.7
后端的实现方面描述如下: >通过ASM发布Scala类文件 字节码发射器(GenASM,下面链接的源)访问由上一阶段构建的控制流图(CFG),并使用Streaming ASM API直接发出类文件: https://github.com/scala/scala/blob/master/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala 这就是现在的事情.在实验可能性的领域,我一直在研究一个更快的实验性字节码,部分原因是它跳过构建CFG并直接访问Scala抽象语法树(然后使用树ASM API在内存中构建类文件).详细信息: https://github.com/magarciaEPFL/scala/blob/GenBCodeOpt/src/compiler/scala/tools/nsc/backend/jvm/GenBCode.scala (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |