RFR: 8264016: [JVMCI] add some thread local fields for use by JVMCI

Tom Rodriguez never at openjdk.java.net
Wed Mar 24 18:55:40 UTC 2021


On Wed, 24 Mar 2021 17:00:17 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:

>> 8264016: [JVMCI] add some thread local fields for use by JVMCI
>
> We made the _threadObj field in JavaThread an OopStorage to avoid a crash during thread deletion.  It's not recommended to add oops directly to runtime data structures.  I have to dig up the bug first.
> 
>> I haven't done a deep analysis of how much could be recovered but I could look into reducing the overall size JavaThread by > repacking if it makes adding these fields more palatable.
> 
> We have this sort of on our (internal) list with other improvements, so don't do anything here.
> We also had a JVMCI bug that suggested adding these fields to a side .hpp file and referring to it in JavaThread by that container.  Like HandshakeState.  You can optimize the field layout inside this as you want.
> 
> I'm marking "Request changes" until I've had time to dig up the bug.

No the C++ compiler just emits them in the declared order.  Since we group the field declarations by their relatedness it's not easy to get a completely good overall packing.  There's actually less direct waste than I expected in 17, though there are lots of cases where int are used to stored bools.  clang doesn't appear to optimize the storage for enums so there are lots of small enums stored in ints instead of bytes.  I believe gcc will use the smallest storage available.  There's also dubious stuff like the ``char[64]`` in the HandshakeState and lots of statistics that could live elsewhere.  Is there a bug I could attach my observations to?  It's nothing earth shattering but the clang reported layout is interesting to see.

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

PR: https://git.openjdk.java.net/jdk/pull/3147


More information about the hotspot-dev mailing list