[aarch64-port-dev ] RFR: 8189596: AArch64: implementation for Thread-local handshakes

Dmitry Samersov dmitry.samersoff at bell-sw.com
Mon Nov 27 15:30:42 UTC 2017


Andrew,

> http://cr.openjdk.java.net/~aph/8189596-2

1. interp_masm_aarch64.cpp

 456   if (needs_thread_local_poll) {

It might be better to put the code related to needs_thread_local_poll
into the single block for better readability.

Approx :

if (needs_thread_local_poll) {
   NOT_PRODUCT(block_comment("Thread-local Safepoint poll"));
   ldr(rscratch2, Address(rthread, Thread::polling_page_offset()));
   tbz(rscratch2, exact_log2(SafepointMechanism::poll_bit()), notsafepoint);

   lea(rscratch2, ExternalAddress((address)safepoint_table));
   ldr(rscratch2, Address(rscratch2, rscratch1, Address::uxtw(3)));
   br(rscratch2);

}

bind(notsafepoint);

2. macroAssembler_aarch64.cpp

321     safepoint_poll(slow_path);

It might be better to put global poll code to a separate function, to
avoid double checking of SafepointMechanism::uses_thread_local_poll()

3. templateInterpreterGenerator_aarch64.cpp : 1382

1382     __ safepoint_poll_acquire(L);

Do we really need acquire here?

-Dmitry


On 24.11.2017 20:39, Andrew Haley wrote:
> On 24/11/17 10:36, Erik Österlund wrote:
>> By placing loading the local poll value with ldar *only* in the native 
>> wrapper wakeup function, you avoid these issues.
> 
> OK, thanks.
> 
> http://cr.openjdk.java.net/~aph/8189596-2
> 




More information about the aarch64-port-dev mailing list