これらは, 何らかのデータを圧縮しながら書き込む(あるいは逆に圧縮されたデータを解凍しながら読み込む)ためのクラス.
JIT コンパイル中にデバッグ情報を蓄積していく際に使われている模様 (他の所でも使われている?? #TODO)
(行う圧縮処理としては, 例えば, 符号の有り無しが分かっているデータについて最初の符号bitを削る, 等)
CompressedStream 関連のクラスの基底クラス.
なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.
((cite: hotspot/src/share/vm/code/compressedStream.hpp))
// Simple interface for filing out and filing in basic types
// Used for writing out and reading in debugging information.
class CompressedStream : public ResourceObj {
このファイル以外にもサブクラスが存在するので注意. (hotspot/src/share/vm/code/debugInfo.hpp や hotspot/src/share/vm/oops/methodOop.hpp も参照)
See: here for details
CompressedStream クラスのサブクラスの1つ.
圧縮されたデータを解凍しながら読み込む為のメソッドが定義されている.
((cite: hotspot/src/share/vm/code/compressedStream.hpp))
class CompressedReadStream : public CompressedStream {
例えば, OopMapStream 内で使われている.
((cite: hotspot/src/share/vm/compiler/oopMap.hpp))
class OopMapStream : public StackObj {
...
CompressedReadStream* _stream;
また, DepStream 内でも使われている.
((cite: hotspot/src/share/vm/code/dependencies.hpp))
class DepStream {
...
CompressedReadStream _bytes;
See: here for details
CompressedStream クラスのサブクラスの1つ.
データを圧縮しながら書き込む為のメソッドが定義されている.
((cite: hotspot/src/share/vm/code/compressedStream.hpp))
class CompressedWriteStream : public CompressedStream {
例えば, OopMap の中で使われている.
((cite: hotspot/src/share/vm/compiler/oopMap.cpp))
OopMap::OopMap(int frame_size, int arg_count) {
...
set_write_stream(new CompressedWriteStream(32));
また, Dependencies 内でも使われている.
((cite: hotspot/src/share/vm/code/dependencies.cpp))
void Dependencies::encode_content_bytes() {
...
// cast is safe, no deps can overflow INT_MAX
CompressedWriteStream bytes((int)estimate_size_in_bytes());
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.