RFR: 8297757: VarHandles.getStaticFieldFromBaseAndOffset should get the receiver type from VarHandle
Paul Sandoz
psandoz at openjdk.org
Thu Jan 19 23:04:05 UTC 2023
On Thu, 19 Jan 2023 19:14:38 GMT, Mandy Chung <mchung at openjdk.org> wrote:
> `VarHandles.getStaticFieldFromBaseAndOffset` maps a base/offset/fieldType to a static `Field`. It's fragile to assume that the location of a static field returned by `Unsafe.staticFieldBase` is a Class object. This changes the VarHandle implementation for static fields (i.e. `FieldStaticReadOnly` and `FieldStaticReadWrite` classes) to include the receiver type in addition to the base and offset.
src/java.base/share/classes/java/lang/invoke/VarHandles.java line 187:
> 185: // Required by instance static field handles
> 186: static Field getStaticFieldFromBaseAndOffset(Class<?> receiverType,
> 187: Object base,
`base` is now unused.
-------------
PR: https://git.openjdk.org/jdk/pull/12100
More information about the core-libs-dev
mailing list