[master] RFR: Load Klass from header, C1/x86 implementation [v2]

Roman Kennke rkennke at openjdk.java.net
Mon Oct 18 10:43:43 UTC 2021


> This implements loading the Klass* from object header (instead of dedicated Klass* field) in C1 generated code. It introduces a new C1 LIR opcode (LoadKlass) and related CodeStub for the slow-path runtime-call.
> 
> The original implementation was brittle in that it emits the decode_klass() whenever it encounters a load that is T_ADDRESS and from klass_offset_in_bytes() (e.g. 4 or 8). Lucky that we did not seem to emit any unrelated such loads. This new implementation uses a dedicated C1 op instead, and expands this to the corresponding load of the header word, and call into slow-path upon fast-path-failure, in the LIR assembler.
> 
> Testing:
>  - [x] tier1 (x86_64,x86_32)
>  - [x] tier2 (x86_64,x86_32)
>  - [ ] tier3 (x86_64,x86_32)
>  - [ ] tier4 (x86_64,x86_32)

Roman Kennke has updated the pull request incrementally with one additional commit since the last revision:

  Don't create load_klass C1 runtime call stub in 32bit builds

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

Changes:
  - all: https://git.openjdk.java.net/lilliput/pull/20/files
  - new: https://git.openjdk.java.net/lilliput/pull/20/files/a04787d8..7f89b314

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=lilliput&pr=20&range=01
 - incr: https://webrevs.openjdk.java.net/?repo=lilliput&pr=20&range=00-01

  Stats: 6 lines in 1 file changed: 2 ins; 4 del; 0 mod
  Patch: https://git.openjdk.java.net/lilliput/pull/20.diff
  Fetch: git fetch https://git.openjdk.java.net/lilliput pull/20/head:pull/20

PR: https://git.openjdk.java.net/lilliput/pull/20


More information about the lilliput-dev mailing list