RFR: 8325467: Support methods with many arguments in C2 [v24]

Daniel Lundén dlunden at openjdk.org
Mon Sep 1 16:40:01 UTC 2025


On Mon, 1 Sep 2025 08:30:47 GMT, Emanuel Peter <epeter at openjdk.org> wrote:

>> Daniel Lundén has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 35 commits:
>> 
>>  - Restore modified java/lang/invoke tests
>>  - Sort includes (new requirement)
>>  - Merge remote-tracking branch 'upstream/master' into many-arguments-8325467+pr-updates
>>  - Add clarifying comments at definitions of register mask sizes
>>  - Fix implicit zero and nullptr checks
>>  - Add deep copy comment
>>  - Merge remote-tracking branch 'upstream/master' into many-arguments-8325467+pr-updates
>>  - Fix typo
>>  - Updates after Emanuel's comments
>>  - Refactor and improve TestNestedSynchronize.java
>>  - ... and 25 more: https://git.openjdk.org/jdk/compare/b39c7369...80c6cf47
>
> src/hotspot/share/opto/regmask.hpp line 217:
> 
>> 215:   // necessarily representing stack locations) to 1. Here is how the above
>> 216:   // register mask looks like after clearing, setting _all_stack to true, and
>> 217:   // successfully rolling over:
> 
> I'm still struggling to follow here. Maybe `_offset` is not clear to me yet. What is the value here for it? How is it changed with the `rollover`?

This `_offset` stuff is really only for a very specific use case in `PhaseChaitin::Select`, so I understand it can be hard to follow. The value for `_offset` in the example after rollover is 5 = `_rm_size`, since we have rolled over once. When we roll over the next time, the `_offset` is 10, and so on.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20404#discussion_r2314330646


More information about the hotspot-compiler-dev mailing list