< prev index next >

src/hotspot/cpu/x86/x86_64.ad

Print this page
rev 47365 : Make OOM-during-evacuation race-free.

@@ -6472,10 +6472,14 @@
   format %{ "shenandoah_rb $dst, $src" %}
   ins_encode %{
     Register d = $dst$$Register;
     Register s = $src$$Register;
     __ movptr(d, Address(s, BrooksPointer::byte_offset()));
+    // This would benefit from expanding in ideal   
+    if (ShenandoahSafeOOMDuringEvac) {
+      __ andptr(d, ~BrooksPointer::EVAC_BLOCKER_BITMASK);
+    }
   %}
   ins_pipe(ialu_reg_mem);
 %}
 
 instruct shenandoahRBNarrow(rRegP dst, rRegN src) %{

@@ -6486,10 +6490,14 @@
   format %{ "shenandoah_rb $dst, $src" %}
   ins_encode %{
     Register d = $dst$$Register;
     Register s = $src$$Register;
     __ movptr(d, Address(r12, s, Address::times_1, BrooksPointer::byte_offset()));
+    // This would benefit from expanding in ideal   
+    if (ShenandoahSafeOOMDuringEvac) {
+      __ andptr(d, ~BrooksPointer::EVAC_BLOCKER_BITMASK);
+    }
   %}
   ins_pipe(ialu_reg_mem);
 %}
 
 instruct shenandoahRBNarrowShift(rRegP dst, rRegN src) %{

@@ -6500,10 +6508,14 @@
   format %{ "shenandoah_rb $dst, $src" %}
   ins_encode %{
     Register d = $dst$$Register;
     Register s = $src$$Register;
     __ movptr(d, Address(r12, s, Address::times_8, BrooksPointer::byte_offset()));
+    // This would benefit from expanding in ideal   
+    if (ShenandoahSafeOOMDuringEvac) {
+      __ andptr(d, ~BrooksPointer::EVAC_BLOCKER_BITMASK);
+    }
   %}
   ins_pipe(ialu_reg_mem);
 %}
 
 instruct shenandoahWB(rRegP dst, rRegP src, rFlagsReg cr) %{

@@ -6515,10 +6527,14 @@
     Register s = $src$$Register;
     Register d = $dst$$Register;
     // We need that first read barrier in order to trigger a SEGV/NPE on incoming NULL.
     // Also, it brings s into d in preparation for the call to shenandoah_write_barrier().
     __ movptr(d, Address(s, BrooksPointer::byte_offset()));
+    // This would benefit from expanding in ideal   
+    if (ShenandoahSafeOOMDuringEvac) {
+      __ andptr(d, ~BrooksPointer::EVAC_BLOCKER_BITMASK);
+    }
     __ shenandoah_write_barrier(d);
   %}
   ins_pipe(pipe_slow);
 %}
 
< prev index next >