for は
each に化けてて引数が一旦入る場所が IFUNC とかになるだけなので現状で問題ないみたいだ。
OSX で落ちるのは GC が走って GC の中でまた SSE 命令があるとかみたいだ。 __attribute__ とかじゃなくて、ちゃんとスタック調整せんといかんね。となると push pop でゴマかすのはやめないといけないね…まぁ最適化とかやるならいずれやるべきだったんだろうけど。
ちなみに動作確認してる環境一覧
- x86_64, Debian linux, GCC-4.2.4, Ruby-r16734 (開発用)
- x86_64, Debian linux, GCC-4.2.4, Ruby-1.9.0-1
- x86_64, Debian linux, GCC-4.2.4, Ruby-1.9.0-0
- x86, Debian linux, GCC-4.2.4, Ruby-r16588
- x86, Debian linux, GCC-4.2.4, Ruby-1.9.0-1
- x86, Debian linux, GCC-4.2.4, Ruby-1.9.0-0
- x86, Cygwin, GCC-3.4.4, Ruby-1.9.0-1
- x86, WindowsXP mingw32, GCC-3.4.4, Ruby-1.9.0-1
- x86, Mac OSX 10.4, GCC-4.0.1, Ruby-1.9.0-1
x86_64 の Windows, Mac OSX とか、 VC の Rub とか、OSX 10.5 とか *BSD あたりやってみたいところです。なんかもし動かした人とかいたら教えてください。とりあえず NetBSD はさっくりやるか…と思ったら Xen 入ってるカーネルが古いからやめてたんだった…