RFR: JDK-8231583: Shenandoah fails with finagle-http
Aleksey Shipilev
shade at redhat.com
Mon Sep 30 13:32:38 UTC 2019
On 9/30/19 3:12 PM, Roman Kennke wrote:
> Bug:
> https://bugs.openjdk.java.net/browse/JDK-8231583
> Webrev:
> http://cr.openjdk.java.net/~rkennke/JDK-8231583/webrev.00/
Awww.
Please change the synopsis to reflect what is being done, not the symptom of it. Suggestion:
Shenandoah: register clash in SBSA::resolve_forwarding_pointer borrowing
I believe we are better off just fixing the borrowing scheme, like (not heavily tested):
diff -r 6902d5acd5e8 src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp
--- a/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp Mon Sep 30
10:19:03 2019 +0200
+++ b/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp Mon Sep 30
15:30:52 2019 +0200
@@ -212,7 +212,12 @@
// No free registers available. Make one useful.
tmp = rscratch1;
+ if (tmp == dst) {
+ tmp = rscratch2;
+ }
__ push(RegSet::of(tmp), sp);
}
+ assert_different_registers(tmp, dst);
+
Label done;
__ ldr(tmp, Address(dst, oopDesc::mark_offset_in_bytes()));
diff -r 6902d5acd5e8 src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp
--- a/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp Mon Sep 30 10:19:03
2019 +0200
+++ b/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp Mon Sep 30 15:30:52
2019 +0200
@@ -272,7 +272,12 @@
// No free registers available. Make one useful.
tmp = LP64_ONLY(rscratch1) NOT_LP64(rdx);
+ if (tmp == dst) {
+ tmp = LP64_ONLY(rscratch2) NOT_LP64(rcx);
+ }
__ push(tmp);
}
+ assert_different_registers(dst, tmp);
+
Label done;
__ movptr(tmp, Address(dst, oopDesc::mark_offset_in_bytes()));
--
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list