js value

JavaScript 処理系の実装において, どうやって値を格納するか.
1
Atsushi Takayama @edvakf

@Constellation Jaegermonkey は value が128bitになるって書いてありましたけど http://j.mp/bddSlj なってないんでしょうか。もし64bitの NaN boxing ですべて収まるなら128bitにする必要ないと思いますけど。

2010-11-25 07:47:34
小倉唯 @Constellation

@edvakf その記事公開時は確かに128で実装されていたのですが, NaN boxingを使えば実は64でいけて最新のSMは64bit統一ですー. こちらが詳しいです. http://bit.ly/gxX94h

2010-11-25 09:16:07
小倉唯 @Constellation

その時, ノリノリでJSValueのpatch読んだからどっちも見てた. class JSValueが妙にC++のノリがきつくて, 「ちょうSpiderMonkeyぽくない!」とか思ってた... 今は割と「SpiderMonkeyぽいなー」っていう感じになってる.

2010-11-25 09:18:24
Atsushi Takayama @edvakf

@Constellation なるぽにょ。読んでみます64bit float の NaN で使えるのが 50bit ぐらいなので、32bit のポインターなら楽勝ですよね。64bit のポインターな機械だったらどうするんでしょうかね。

2010-11-25 10:34:21
小倉唯 @Constellation

@edvakf うち(lv5)の場合は一応(64bit pointer | double) + tagbitでとりあえずは96bitになりました. 64環境まだないので未テストなので今度やりますー. alignment由来の3bit使えば64bitでおさまるかもです.

2010-11-25 10:45:21
小倉唯 @Constellation

でもNaNの時点で3bit以上使ってるから, ちょっと無理そうだなー. 96bitが妥当か.

2010-11-25 10:47:48
小倉唯 @Constellation

@edvakf lv5は32のときは64bitでおさまって, 64bitの場合は96bitです. 余裕はほんとにゆとりがあって, 実際めちゃめちゃ余ってます!! 16bit判断の話は, tagをunionでuint16_tとしておくとtagbitが演算なしに取れるという話です.

2010-11-25 11:58:27
Atsushi Takayama @edvakf

@Constellation なーるほど。余ってれば何か入れたくなる性分w

2010-11-25 12:05:26