RFR(S) 8231586: enlarge encoding space for OopMapValue offsets

dean.long at oracle.com dean.long at oracle.com
Fri Oct 4 23:27:14 UTC 2019


It's not obvious that we only set 1 bit.  The set methods don't enforce 
that.  And this code looks like it is setting both "derived" and "oop":

http://hg.openjdk.java.net/jdk/jdk/file/ff45c1bf8129/src/hotspot/share/opto/buildOopMap.cpp#l315

dl

On 10/4/19 10:26 AM, Tom Rodriguez wrote:
> http://cr.openjdk.java.net/~never/8231586/webrev
> https://bugs.openjdk.java.net/browse/JDK-8231586
>
> The current OopMapValue encoding uses a bit mask for each value even 
> though only one bit is ever set.  Since only 16 bits are available for 
> encoding this limits the offsets it can express. Compilation with a 
> large number of stack slots can bailout because of this limit.  This 
> changes the encoding to use 2 bits which gives 2 bits back to the offset.
>
> I also deleted some StressDerivedPointers machinery that's been 
> completely unimplemented for years (decades?).  The flag itself is now 
> dead but I wasn't sure if there are test references to it somewhere. 
> Should I delete the flag as well?
>
> mach5 testing is in progress.
>
> tom



More information about the hotspot-compiler-dev mailing list