■
http://www.nminoru.jp/~nminoru/java/cms/pauseless_gc.html
なんかすごい。
ところで、最近思うのだけど、僕がGCをあんまり好きじゃないのは、ただ単にメモリまわりのドロドロしたデバッグが好きだから、とかいうような気がしてきた。
というか、valgrindの賢さを見るのが楽しいんだよな。いや、ほんと、あれは見るたびに感動できるよ。どうやって動いてるのかわからないままだけど。
あー、じゃあ、次の宿題は
- valgrindおっかける
- mudflapおっかける
のどっちかだな。やらないけど。
■
必要になった時が実装するとき。
nanika: while ( true ) { while (true) { break nanika; } }
今までループ脱出条件いじってなんとかしてたのが厳しくなってきたのでbreakを実装。だがしかし、
while ( true ) { var i = ...; function nanika () { return i; } break; }
今の実装だと、これがキツい。つくづくパス数ケチるんじゃなかったと思うよ。今からでも直すか?ふんがふんが。めんどい。後埋めにすりゃ、どうにでもなるんだけど。
stackuse: 1, localuse: 0 0: LOAD_TRUE 1: JPF 17(s), 4: LOAD_TRUE 5: JPF 14(s), 8: JMP 17(s), 11: JMP 4(s), 14: JMP 0(s), 17: LOAD_NULL
ううん。こういうの見てると簡単なのでもいいから最適化入れたくなってくるな…けど、めんどい。
■
アホー。それだとラベルとconsの区別が付かないじゃないかっ。
[a:b] a:
うーん。どうしたもんか。
- ラベルを :ident: に
:end: while ( true ) break end;
- コンスを.に。メンバアクセスを->に
あー、前者だな。前者。ややキモいけど、ラベルbreakの出現頻度を考えると許容範囲だろう。多分。