Date: Sat, 11 Dec 99 20:53:29 JST From: SHUDO Kazuyuki Subject: [JavaHouse-Brewers:29501] Re: =?ISO-2022-JP?B?GyRCR1tOcyROJTUlJCU6GyhC?= (Re: String =?ISO-2022-JP?B?GyRCJE4lNSUkJTobKEI=?= ) To: java-house-brewers at java-house.etl.go.jp (JavaHouse Brewers ML) Message-Id: <19991211210939Y.shudoh at muraoka.info.waseda.ac.jp> | 例えば、Sun の classic VM では、2**27 - 1 が配列の最大長となっています。 > Sunの実装で5ビット分は何に使われているのだろうか。 オブジェクトの種別 (配列の要素の型、または配列ではないか) を表しています。 JDK の include/ (JDK 1.1) または include-old/ (JDK 1.2) にある interpreter.h と typecode.h を見ると判ります。 interpreter.h 中のマクロ obj_flags(o) で得られる 5bit の意味が typecode.h の冒頭のコメントで詳しく説明されています。 配列の場合、インスタンスに属するある 32bit (*) が、 上記目的に 5bit と配列長を表す 27bit に分けて使われています。 (*) JHandle *handle とした場合の handle->methods。 型は struct methodtable * > HotSpotやExactVMでは異なるのではないだろうか...。 HotSpot VM は、大村さんによる JDK 1.3beta での実験結果 ([JavaHouse-Brewers:29492]) によれば、確かに classic VM (配列長の表現が 27bit) とは違うようですね。 SHUDO Kazuyuki/首藤一幸 私をたばねないで あらせいとうの花のように shudoh at muraoka.info.waseda.ac.jp