On Thu, 2 Feb 2023 12:54:06 GMT, Boris Ulasevich <[email protected]> wrote:

> This is another pull request to replace 
> https://github.com/openjdk/jdk/pull/10025 change which was blocked as not 
> acceptable (see 
> https://github.com/openjdk/jdk/pull/10025#pullrequestreview-1228216330)
> 
> The objections to change #10025 were:
> - specialized algorithm for given data complicates things, makes it hard to 
> learn, test and support
> - algorithm is changed for DebugInfo, and the benefit is only for one type of 
> data
> - statistics of the debug info data can (will) change, breaking the 
> optimization
> 
> The suggestion was:
> - don't change the core algorithm, but add one on top or underneath the 
> existing one, or reuse off-the-shelf zero-reduction schemes such as Cap'n 
> Proto
> 
> With this change I propose a different approach. Instead of bit coding, the 
> sequence of zeros in a data stream is encoded with a special character that 
> normally never appears in Unsinged5 encoding, followed by a byte containing a 
> number of zeros. In this way the updated algorithm is a pure extension of the 
> existing encoding algorithm: data encoded without the zero-reduction trick is 
> unpacked in the same way as before.
> 
> Currently there are several datasets affected by this change: Dependencies 
> info, OopMap info, LineNumber info, Debug info. Only Debug info has a large 
> number of zeros and gets a significant benefit. I experimented with the Cap'n 
> Proto and lz4 algorithms on DebugInfo. The Unsinged5 algorithm has a better 
> compression rate than these.
> 
> DebugInfo data size is reduced by ~20% (actually, 10-30%, depending on the 
> application). Total nmethod size reduction is ~3%.
> 
> Performance impact: Renaisance and DaCapo benchmarks do not show any 
> difference.

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/code/CompressedReadStream.java
 line 106:

> 104:   @Override
> 105:   public void setPosition(int position) {
> 106:     this.position = position;

Maybe a call to `super()` would be better.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/12387#discussion_r1254582735

Reply via email to