RFR: 8368095: [leyden] Fix klass dependency recording [v3]

Andrew Dinn adinn at openjdk.org
Mon Sep 22 13:50:04 UTC 2025


On Fri, 19 Sep 2025 13:57:05 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> See the bug for symptoms. https://github.com/openjdk/leyden/commit/7b7648a4c9f67be509c6fccbcbc0502648388fdc exposed that our dependency recording is not actually accurate. Now that we check that precompiled tasks have dependencies recorded, before we treat class IK as fully initialized, _missing dependencies_ lead to premature replacement of AP4 -> A4, and potential trap from A4.
>> 
>> I see there are several missing things:
>>  1. We need to record dependencies on object klasses as well, not only on plain metadata.
>>  2. Since ciObjectFactory is shared, we need to notice objects/metadata even on cache hits.
>>  3. It looks like we need to observe dependencies even when `cik->is_initialized()` returns `false` at the moment.
>> 
>> Additional testing:
>>  - [x] Linux x86_64 server fastdebug, `runtime/cds`
>>  - [x] Benchmarks
>
> Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Revert "Retract some unneccesary paths"
>   
>   This reverts commit cb48aacac9d7915e6fd890398020442aedac7948.

So, the difference between 277/136 traps after 'This PR + (IK->is_initialized() || IK->is_being_initialized()) check' and the status quo of 691/553 traps is caused by two additional checks: 1) including deps on the klasses of objects 2) doing so even if the objects have already been observed in the cache. Just out of interest, what's the difference if you add those object/klass deps only when they are new rather than already in the cache?

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

PR Comment: https://git.openjdk.org/leyden/pull/97#issuecomment-3319149595


More information about the leyden-dev mailing list