RFR: 8294729: [s390] Implement nmethod entry barriers [v13]
Tyler Steele
tsteele at openjdk.org
Thu Oct 27 22:32:32 UTC 2022
On Thu, 27 Oct 2022 21:33:28 GMT, Martin Doerr <mdoerr at openjdk.org> wrote:
>> Tyler Steele has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Clean up comments. Adjust copyright years.
>
> src/hotspot/cpu/s390/gc/g1/g1BarrierSetAssembler_s390.cpp line 243:
>
>> 241: __ save_return_pc();
>> 242: __ push_frame_abi160(nbytes_save); // Will use Z_R0 as tmp.
>> 243: __ save_volatile_regs(Z_SP, frame::z_abi_160_size, true, true);
>
> Adds overhead for other usages which don't need it. May be still ok, though.
Agreed. The PPC implementation I looked at has more complicated logic for determining if a frame is needed, but it relies on a PreservationLevel flag which is not present on s390. If there is another way to deduce whether a frame is required here, or if we should add that flag on s390, I am happy to make that change as well.
> src/hotspot/cpu/s390/gc/shared/barrierSetAssembler_s390.cpp line 178:
>
>> 176: // Class loader is weak. Determine whether the holder is still alive.
>> 177: __ z_lg(Z_R1_scratch, in_bytes(ClassLoaderData::holder_offset()), Z_R0_scratch);
>> 178: __ resolve_weak_handle(Address(Z_R1_scratch), Z_R1_scratch, Z_R0_scratch, Z_R2);
>
> You're killing R2 which contains the 1st argument.
I also thought this might draw some attention. Is there a better register to use (R7?), or will I simply have to save & restore the value of whatever register I choose?
-------------
PR: https://git.openjdk.org/jdk/pull/10558
More information about the hotspot-dev
mailing list