RFR: 8294729: [s390] Implement nmethod entry barriers [v13]
Martin Doerr
mdoerr at openjdk.org
Thu Oct 27 21:38:54 UTC 2022
On Thu, 27 Oct 2022 21:06:37 GMT, Tyler Steele <tsteele at openjdk.org> wrote:
>> This draft PR implements native method barriers on s390. When complete, this will fix the build, and bring the other benefits of [JDK-8290025](https://bugs.openjdk.org/browse/JDK-8290025) to that platform.
>
> Tyler Steele has updated the pull request incrementally with one additional commit since the last revision:
>
> Clean up comments. Adjust copyright years.
I have to revoke my review. This does no longer look correct.
src/hotspot/cpu/s390/gc/g1/g1BarrierSetAssembler_s390.cpp line 218:
> 216:
> 217: // TODO: GPRS: 5 + FPRS: 8 + Flags:1?
> 218: const int nbytes_save = (5 + 8 + 1) * BytesPerWord;
Flags are not needed.
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.
src/hotspot/cpu/s390/gc/shared/barrierSetAssembler_s390.cpp line 169:
> 167: // Load class loader data to determine whether the method's holder is concurrently unloading.
> 168: __ load_method_holder(Z_R0_scratch, Z_method);
> 169: __ z_lg(Z_R0_scratch, in_bytes(InstanceKlass::class_loader_data_offset()), Z_R0_scratch);
I don't think R0 can be used for storage addressing.
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.
-------------
Changes requested by mdoerr (Reviewer).
PR: https://git.openjdk.org/jdk/pull/10558
More information about the hotspot-dev
mailing list