RFR: 8277417: C1 LIR instruction for load-klass [v2]
Roman Kennke
rkennke at openjdk.java.net
Fri Nov 19 18:22:37 UTC 2021
> In C1, the load of a Klass* out of an object is currently identified by a load of type T_ADDRESS with offset oopDest::klass_offset_in_bytes(). When encountering such load, this may be decoded when +CompressedClassPointers. This is problematic and ugly: if we ever emit a T_ADDRESS load with offset 8 or 4 (== klass_offset_in_bytes) that is not a Klass*, we would attempt to decode the result. We have been lucky so far.
>
> Also, in Lilliput, we want to do something entirely different there, and need to be able to emit more complex code, possibly including runtime call.
>
> The change introduces a new C1 LIR opcode OpLoadKlass, and refactors the implementations in c1_LIRAssembler_xyz.cpp to emit the code there, instead of mem2reg(). Notice that I could not test anything but x86, all other platforms only received very basic testing via GHA. It would be nice if respective maintainers could give it a try.
>
> Testing:
> - [x] tier1 (x86_64)
> - [x] tier2 (x86_64)
> - [x] tier3 (x86_64)
Roman Kennke has updated the pull request incrementally with one additional commit since the last revision:
Fix null-check on PPC
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/6464/files
- new: https://git.openjdk.java.net/jdk/pull/6464/files/988036fa..3454c1bf
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=6464&range=01
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=6464&range=00-01
Stats: 7 lines in 1 file changed: 6 ins; 0 del; 1 mod
Patch: https://git.openjdk.java.net/jdk/pull/6464.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/6464/head:pull/6464
PR: https://git.openjdk.java.net/jdk/pull/6464
More information about the hotspot-dev
mailing list