使ってよかったValgrind

VMからVMに渡したHeapObjectのポインタ(obj)が指す内容が知らない間に破壊される現象に一瞬悩む。
しかし、Valgrindにはメモリの特定範囲を"実行中に"触れなくする機能が有る。
/usr/valgrind/valgrind.hをincludeし、例えばVALGRIND_MAKE_MEM_NOACCESS(obj,16);を好きな場所で実行すれば、objの差す先から16byteの範囲を触った瞬間にブレークできる。
今回はGC_mallocで確保していない構造体にGCポインタを格納していた所為だったのでさほどありがたみは無かった*1が、それでも通常のシチュエーションではSEGVしないことを考えると使ってよかったと思える(通常のfree()やGCが開放したメモリ領域は触っても死なないことも有る)。

やっと描画命令の受け渡しができるようになった。描画はcairoなので、PostscriptのようなS式を投げると画面に描画される。Windowsにはまだ対応していない。

*1:ValgrindからGCヒープとそうでないヒープをすぐに識別する方法って有るんだろうか。。