LLVM支持GC,同时实现托管内存语言的前端



我有一种语言被编译成字节码,运行在我无法访问的闭源虚拟机上。我正在研究为该语言创建LLVM前端的选项。我试图理解的一件事是,垃圾回收器是如何融入这幅画面的。我丝毫不想重新实现它。LLVM中有什么东西可以在特定情况下处理垃圾收集吗由于我正在处理的语言与核心Java相似,我简要地看了一下llvm项目下托管的Java llvm前端,但没有找到快速的答案——我可能很容易忽略了一些东西,因为我对这些东西不太熟悉,而且关于该子项目的文档也不多。Repo似乎也相当陈旧,上一次承诺可以追溯到2007年。

在阅读了一些LLVM文档后,据我所知,LLVM为垃圾收集器提供了一些钩子,但仅限于此。如果有人感兴趣的话,我发现了两个开放的、经过验证的GC实现:

  • https://github.com/ivmai/bdwgcIL2CPP框架下Unity在新VM中使用的libgc
  • https://github.com/mozilla/shumwaymozilla的flash播放器的开放实现

最新更新