[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