K.Sasada's Home Page

こめんとのついか

こめんとこめんと!

message

please set comment :).

_18(Wed)

http://d.hatena.ne.jp/xtalco/20061018#1160881955

興味深いなぁ。つまり、32bit CPU なら 30bit、64bit CPU なら 62bit の情報を無駄にしているわけだが、これくらいなんともない、という判断。こういうタグ付けをする言語処理系って他にないんだろうか。無いわけないと思うけど。そもそも、俺は他の処理系しらなすぎるな。

浮動小数点数はやっぱり double (64bit) は欲しいなぁ、と思うのなら、最大 126bit 無駄にする設計が考えられるということか。

うーん、アリな気がしてきたな、メモリの有り余っている特定用途向けには。

struct VALUE {
  union {
    int ival;
    long lval;
    double dval;
    ptr *oval;
  };
  char type;
};

にしておけば、そんなにやばくないかな。9byte 使うのが、なんとも気持ち悪いが。

RValues が VALUE を持ちにくくなるのも問題か。

キャッシュとか考えると、やっぱり無いかもしれないけど。

あぁ、そもそも C 関数の引数に渡しづらいな、とんでもなく。


関数で渡すときはポインタ間接にして...、うーん、うまくないなぁ。今と一緒のようになってしまう。


RFloat をマシンスタックに割り付けるような実装を考えてみようと思ったけれど、3秒くらいでダメそうだなと思って諦めた。うぅむ。

RFloat 用のヒープを用意して利用する、ってのはアリかな、とは思った。ちょっと GC 時の mark 処理が難しくなるかな。

単なる double の配列と、bitmap だけで、なんとかなるかな、とか。あぁ、このネタいいなぁ。論文書けないかなぁ。mark の処理に、イチイチ Float への mark かと考えないといけない時点で、やっぱり難しいかなぁ。mark なんて、GC 時に起こるだけだから、なんとかならないかなぁ。

bitmap でのオブジェクト管理をやるときって freelist を作るのはどうやるんだろう。ううむ、結局 freelist のために link 構造が必要なのか? それって間抜けすぎ。オブジェクトアロケーションが超高速であれば、Float が heap にあっても問題ないわけで。ううむ、やっぱり難しいか。マシンスタック上にぽんと作る以上のものは。InlineRuby みたいなものが、やっぱり正しいかなぁ。


あぁ、英語の舌が回らない。最近全然まったく喋ってなかったしな。


http://wiki.rubygarden.org/Ruby/page/show/RubyConf2006Facebook

chad の髪がふさふさでびっくりした。


懐中時計の鎖を1000円で買った。つめの部分が壊れてしまっていたのだが。秋葉原の外に面した店で、埃をかぶっていた。ヨドバシだったら、もう少し安く買えたかなあ。

_向井(Wed Oct 18 09:11:17 JST 2006)

 lua が確かそのようになってます。

_ささだ(Wed Oct 18 14:03:14 JST 2006)

 へー、なるほど。関数への受け渡しなんかはどうやるんだろう。ポインタ渡し?

_maeda(Wed Oct 18 21:00:14 JST 2006)

太古のMACLISPコンパイラは、データフロー解析を行って「関数内で解放される」浮動小数点数に関しては特別なスタックに割り付けてました(Fast Arithmetic in MACLISP)。 って、去年の5月12日にも同じコメントを書いてるな。

データ本体と別にビットマップページを持つ場合でも、(データがポインタ以上のサイズなら)フリーリストを作ることはできますよね。


struct FLONUM {
  union {
    double dval;
    ptr *next_freel;
  };
};

とか。

フリーリストを作るのが嫌なら、mark-and-don't-sweepとか。

  • フリーリスト代わりに、小さなポインタ配列(1ページ分のオブジェクト数とか)を作っとく。
  • アロケート時は、この配列からフリーなオブジェクトのアドレスを取り出す。
  • 配列が空なら、1ページだけスイープして、フリーなオブジェクトへのポインタを配列に詰める。

好きにコメントを編集してください。ただし、あまり他の人のコメントを書き換えることは感心しません。



back

tton 記述が使えます。YukiWikiな記述してりゃ問題ありません。

「行頭に#code」 と、「行頭に#end」 で挟むと、その間の行は pre で囲まれます。プログラムのソースを書くときに使ってください。

例:

#code

(なんかプログラム書く)

#end

リンクは

[[なまえ|http://www.example.org]]

とか

[[http://www.example.org]]

で貼れます。

$Date: 2003/04/28 10:27:51 $