scala是如何生成字节码的?使用ASM之类的库,还是直接编写二进制文件?
我想知道scala是如何生成字节码的,它是否使用了ASM之类的库?或者只是将二进制文件写入.class文件以提高性能?看起来它们正在生成一些中间代码,然后手动将其转换为java字节码或.net msilscala是如何生成字节码的?使用ASM之类的库,还是直接编写二进制文件?,scala,jvm,bytecode,Scala,Jvm,Bytecode,我想知道scala是如何生成字节码的,它是否使用了ASM之类的库?或者只是将二进制文件写入.class文件以提高性能?看起来它们正在生成一些中间代码,然后手动将其转换为java字节码或.net msil 这里的编译器概述不错:从2.10开始,Scala编译器使用ASM 4发出字节码,支持-target:jvm-1.5、-target:jvm-1.6和-target:jvm-1.7 后端的实现方面如中所述: 通过ASM发送Scala类文件 字节码发射器(GenASM,下面链接的源代码)访问前
这里的编译器概述不错:从2.10开始,Scala编译器使用ASM 4发出字节码,支持-target:jvm-1.5、-target:jvm-1.6和-target:jvm-1.7 后端的实现方面如中所述:
- 通过ASM发送Scala类文件
在2.10“GenJVM”使用之前。现在它已经报废了。GenJVM使用了一个内部开发的字节码操作库(例如,它跟不上JDK6堆栈映射框架),我用星号标出了这个问题,但这只是因为您的答案。好消息@Miguel Garcia,有没有办法访问内存中发出的字节码?我想将运行时生成的Scala源代码直接编译到“.class”文件。也就是说,仅当它比编写scala文本文件并通过系统调用调用编译器更快时。我将查看第二个链接是404。知道它可能搬到哪里去了吗?