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
