Hello,

Embdedded flat contended fields might not be included in the class' OopMap if 
there are no other oop fields in the holder class.

Flat fields are handled separately in fieldLayoutBuilder.cpp, resulting in the 
current `_oop_count` not being updated if a flat field contains oops. This is 
OK, since the oop fields are handled at a later point in time. However, for 
contended fields, which are part of the contended group, embedded oop fields 
are only tracked if: `cg->oop_count() > 0`, which is not guaranteed to be true.

I've written a test to see if the oop field is included in the class' OopMap 
and also changed the `_oop_count` field `_has_embedded_oops`, and changed that 
to a boolean property, which is how we've used it so far.

Since embedded fields in flat paylods are not tracked in `cg->oop_fields()`, we 
can't do the assert that is currently there, so I just removed that.

Testing:
* New test fails without the fixes in fieldLayoutBuilder and passes with fixes
* Running Oracle's tier1-3

---------
- [x] I confirm that I make this contribution in accordance with the [OpenJDK 
Interim AI Policy](https://openjdk.org/legal/ai).

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

Commit messages:
 - 8383415: [lworld] Flat contended oop field might not be included in OopMap

Changes: https://git.openjdk.org/valhalla/pull/2371/files
  Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2371&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8383415
  Stats: 82 lines in 3 files changed: 76 ins; 1 del; 5 mod
  Patch: https://git.openjdk.org/valhalla/pull/2371.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2371/head:pull/2371

PR: https://git.openjdk.org/valhalla/pull/2371

Reply via email to