llvm : GC, bitcode

llvmGC*1およびビットコード*2に関するドキュメントに、ごく簡単に目を通す。

GC

llvmはすぐに使えるようなGCを提供してはいなかった。
ただ、GCを組み込むことはあらかじめ想定されており、そのためのフレームは用意されているようなので、GCを実装・利用するのは比較的楽そう。
他の言語との連携や、GCアルゴリズムを実装することの楽しみ(?)を考慮すると、特定のGCの使用を強制されない方が個人的にはありがたい*3
このドキュメントは必要に応じて適宜参照する。

ビットコード

llvmのビットコード(バイトコード)のフォーマットも文書化されていた。
今のところ、あらかじめ用意されているC++のコードジェネレータは使わないで、common lispでコード生成部も作成するつもりなので、ビットコードフォーマットはまず初めに把握しておく必要あり*4

*1:Accurate Garbage Collection with LLVM — LLVM 3.4 documentation

*2:LLVM Bitcode File Format — LLVM 3.4 documentation

*3:これは結構重要。いままでJVMにも興味(だけ)はあったが、それを使って何かを作ろうと思ったことはない。GCが必須そうな印象があるから。オプションとして利用可能なら、それはそれで便利だと思うけど。

*4:ただし当面は、楽をするために、lispアセンブリコードへの変換までを担当し、後はllvm-asコマンドに任せてしまうかもしれない。