`CompiledEntrySignature::initialize_from_fingerprint()` was building `_sig_cc` 
and `_sig_cc_ro` the same way, but for virtual methods with an inline‑type 
receiver they must differ: `_sig_cc` should include the receiver’s scalarized 
fields, while `_sig_cc_ro` should represent the receiver as a single `T_OBJECT`.
This change fixes `_sig_cc_ro` construction so that when the receiver is an 
inline type, its fields are skipped and a single object entry is emitted 
instead.
It also adds asserts for `_sig_cc_ro` as a regression test proved to be hard to 
isolate and the asserts trigger immediately with any test if the RO signature 
is wrong.

Tests: 
* Tier 1-3+
* Assert makes even build crash without fix

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

Commit messages:
 - JDK-8377670: cleanup if
 - JDK-8377670: add RO assert
 - JDK-8377670: fix _sig_cc_ro computation
 - Merge branch 'lworld' into JDK-8377351
 - Revert "JDK-8377670: [lworld] 
CompiledEntrySignature::initialize_from_fingerprint() looks broken"
 - Merge branch 'lworld' into JDK-8377351
 - JDK-8377670: [lworld] CompiledEntrySignature::initialize_from_fingerprint() 
looks broken

Changes: https://git.openjdk.org/valhalla/pull/2185/files
  Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2185&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8377670
  Stats: 34 lines in 1 file changed: 29 ins; 0 del; 5 mod
  Patch: https://git.openjdk.org/valhalla/pull/2185.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2185/head:pull/2185

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

Reply via email to