From: Yukihiro Matsumoto Date: 2009-06-14T02:01:11+09:00 Subject: [ruby-dev:38603] Re: [Feature: trunk] rb_objspace_each_objects まつもと ゆきひろです In message "Re: [ruby-dev:38602] [Feature: trunk] rb_objspace_each_objects" on Sun, 14 Jun 2009 01:53:21 +0900, SASADA Koichi writes: | C レベルで ObjectSpace.each_object 相当の処理をするための C API を作る |のはどうでしょうか.動機は,[ruby-dev:38584] で提案した機能を,gc.c に手 |を入れずに作るためです. | | インターフェス案です. | |void rb_objspace_each_objects( | int (*func)(VALUE *start, VALUE *end, void *data), | void *data) | | ObjectSpace.each_object と違い,1つずつコールバック関数に渡すのではな |く,あるまとまった単位ごとに何度かコールバック関数に渡されます.範囲は |start から end まで.渡されるオブジェクトは,free された cell を含んでい |る可能性があります.この場合,flags をチェックする必要があります. * each_objectと単数形ではないだろうか * VALUE*ではなくVALUEではないだろうか という懸念がありますが、原則的には賛成です。 |*ST_CONTINUE みたいなのを使ってしまったんですが, | これは行儀が悪い気がする.どうするべき? ST_CONTINUEはst_table用ですから、本来はobject_each用の定数を 用意すべきでしょうね。