RFR: JDK-8310020: MacroAssembler::call_VM(_leaf) doesn't consistently check for conflict with C calling convention. [v3]

Amit Kumar amitkumar at openjdk.org
Thu Jun 15 18:22:03 UTC 2023


On Thu, 15 Jun 2023 08:22:17 GMT, Damon Fenacci <duke at openjdk.org> wrote:

>> # Issue
>> The `MacroAssembler::call_VM` and `MacroAssembler::call_VM_leaf` methods don't include asserts to check if the passed arguments collide with the C calling convention registers **consistently**. Some versions omit them completely (e.g. aarch64 `MacroAssembler::call_VM_leaf`), other ones use regular asserts (where the `assert_different_registers` function should be used).
>> 
>> # Solution
>> We use `assert_different_registers` across all `MacroAssembler::call_VM` and `MacroAssembler::call_VM_leaf` where a  check is needed (except for the arm implementation, which doesn't change as it uses fixed registers).
>> 
>> # Testing
>> This fix includes changes for x86_32/64 and aarch64, which I could test thoroughly but also for **ppc,** **riscv**, and **s390** for which I would **need some help with testing**.
>
> Damon Fenacci has updated the pull request incrementally with one additional commit since the last revision:
> 
>   JDK-8310020: add missing riscv asserts

LGTM, Test result also came clean. A few other assert-occurrence could be updated but I guess those are out of scope for this PR. 

Thank you very much for the change :-)

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

Marked as reviewed by amitkumar (Committer).

PR Review: https://git.openjdk.org/jdk/pull/14470#pullrequestreview-1482159749


More information about the hotspot-dev mailing list