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

Andrew Dinn adinn at redhat.com
Fri Nov 24 14:32:33 UTC 2017


On 23/11/17 16:15, Andrew Dinn wrote:
>> http://cr.openjdk.java.net/~aph/8189596-1/
> I have reviewed this by eyeball and it all looks good. I still need to
> build and run to be 100% sure.
Well, it builds and runs stuff ok (e.g. netbeans) despite Erik's race
(I'll address that separately in reply to Erik).

One minor peccadillo I did notice:

in src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp

+void MacroAssembler::safepoint_poll(Label& slow_path) {
+  if (SafepointMechanism::uses_thread_local_poll()) {
+    ldr(rscratch1, Address(rthread, Thread::polling_page_offset()));
+    tbnz(rscratch1, exact_log2(SafepointMechanism::poll_bit()), slow_path);
+  } else {
+    ExternalAddress state(SafepointSynchronize::address_of_state());
+    unsigned long offset;
+    adrp(rscratch1,
ExternalAddress(SafepointSynchronize::address_of_state()), offset);
+    ldrw(rscratch1, Address(rscratch1, offset));
+    assert(SafepointSynchronize::_not_synchronized == 0, "rewrite this
code");
+    cbnz(rscratch1, slow_path);
+  }
+}

In the else branch you declare ExternalAddress state then don't use it
in the adrp call.

regards,


Andrew Dinn
-----------
Senior Principal Software Engineer
Red Hat UK Ltd
Registered in England and Wales under Company Registration No. 03798903
Directors: Michael Cunningham, Michael ("Mike") O'Neill, Eric Shander


More information about the aarch64-port-dev mailing list