[master] RFR: Load Klass* from header in interpreter (x86) [v5]

Roman Kennke rkennke at openjdk.java.net
Wed Oct 6 16:48:11 UTC 2021


> This implements loading the compressed Klass* from the object header, instead of the Klass* field in the x86 interpreter. It does the fast-path (unlocked object) in assembly, and calls into the runtime to deal with locked objects.
> 
> This is a proof-of-concept. It is not entirely clear if we can even call into runtime from a couple of places where load_klass() is called, especially in C2, C1 and some stubs. OTOH, we may end up not having to do any of this if we come up with a way to avoid displaced headers altogether.
> 
> Testing:
>  - [x] tier1 (x86_32,x86_64)
>  - [x] tier2 (x86_32,x86_64)
>  - [x] hotspot_gc (x86_32,x86_64)

Roman Kennke has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision:

 - Merge branch 'master' into klass-from-header-interpreter
 - Emit null-checks before load_klass with correct offset
 - Use constant instead of literal in xor-test-sequence
 - Update comment about xorb/xorq encoding
 - Load Klass* from header in interpreter (x86)

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

Changes:
  - all: https://git.openjdk.java.net/lilliput/pull/15/files
  - new: https://git.openjdk.java.net/lilliput/pull/15/files/dc73c694..cbe93827

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=lilliput&pr=15&range=04
 - incr: https://webrevs.openjdk.java.net/?repo=lilliput&pr=15&range=03-04

  Stats: 31915 lines in 917 files changed: 22686 ins; 4497 del; 4732 mod
  Patch: https://git.openjdk.java.net/lilliput/pull/15.diff
  Fetch: git fetch https://git.openjdk.java.net/lilliput pull/15/head:pull/15

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


More information about the lilliput-dev mailing list