gpt4 book ai didi

scala - scala 是如何生成字节码的?使用一些像 ASM 这样的库,还是直接编写二进制文件?

转载 作者:行者123 更新时间:2023-12-03 23:04:06 33 4
gpt4 key购买 nike

我想知道 scala 是如何生成字节码的,它是否使用了一些像 ASM 这样的库?或者只是将二进制文件写入 .class 文件以提高性能?

最佳答案

从 2.10 开始,Scala 编译器使用 ASM 4 来发出字节码,支持 -target:jvm-1.5 、 -target:jvm-1.6 和 -target:jvm-1.7

后端的实现方面描述如下:

  • 通过 ASM 发出 Scala 类文件
    http://lamp.epfl.ch/~magarcia/ScalaCompilerCornerReloaded/2012Q2/GenASM.pdf

  • 字节码发射器(GenASM,源链接如下)访问由前一阶段构建的控制流图(CFG),并使用 Streaming ASM API 直接发射类文件:

    https://github.com/scala/scala/blob/master/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala

    这就是现在的工作方式。在实验可能性领域,我一直在研究发出的更快的实验字节码,部分原因是它跳过构建 CFG 并直接访问 Scala 抽象语法树(然后使用 Tree ASM API 在内存中构建类文件)。详情在:

    https://github.com/magarciaEPFL/scala/blob/GenBCodeOpt/src/compiler/scala/tools/nsc/backend/jvm/GenBCode.scala

    关于scala - scala 是如何生成字节码的?使用一些像 ASM 这样的库,还是直接编写二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13380807/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com