RFR: 8247912: Make narrowOop a scoped enum

Kim Barrett kbarrett at openjdk.java.net
Mon Sep 21 04:24:25 UTC 2020


Please review this change to the type narrowOop from a typedef for juint to a
scoped enum with uint32_t as the representation type.  This provides stronger
type checking when using this type.

For the most part this was fairly straightforward, and the patch size is
relatively small.  The implementation of some existing CompressedOops
"primitives" required adjustment. An explicit conversion to narrowOop was
added, with casts change to use it.  There were a few places that were type
punning and needed explicit conversions,, mostly in platform-specific assembly
support.

There are a couple of lingering problems.

Relocation::pd_set_data_value in relocInfo_ppc.cpp is treating a narrowKlass
as a narrowOop.  I adjusted the code to accommodate the narrowOop change, but
this probably ought to be done differently.

There are a couple of `(narrowOop)` casts remaining in s390.ad.  I'm not sure
whether these can be safely converted to CompressedOops::narrow_oop_cast.

There might still be some casts from narrowOop to an integral type.  Those are
hard to find in our cast-happy code base.

Testing:
tier1-6 for Oracle supported platforms.
Build fastdebug linux-ppc64le and linux-s390x.

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

Commit messages:
 - 8247912: Make narrowOop a scoped enum

Changes: https://git.openjdk.java.net/jdk/pull/273/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=273&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8247912
  Stats: 83 lines in 22 files changed: 32 ins; 5 del; 46 mod
  Patch: https://git.openjdk.java.net/jdk/pull/273.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/273/head:pull/273

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


More information about the shenandoah-dev mailing list