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