8227637: Adjust Shenandoah C2 verifier to recognize IN_NATIVE barriers
authorrkennke
Mon, 15 Jul 2019 12:31:35 +0200
changeset 55678 296560a21cea
parent 55677 4b1de39beda3
child 55679 aa96c53c592b
8227637: Adjust Shenandoah C2 verifier to recognize IN_NATIVE barriers Reviewed-by: roland
src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp
--- a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp	Mon Jul 15 17:53:36 2019 +0800
+++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp	Mon Jul 15 12:31:35 2019 +0200
@@ -208,7 +208,10 @@
         if (trace) {
           tty->print("Found raw LoadP (OSR argument?)");
         }
-      } else if (in->Opcode() == Op_ShenandoahLoadReferenceBarrier) {
+      } else if (in->Opcode() == Op_ShenandoahLoadReferenceBarrier ||
+                 (in->Opcode() == Op_Proj &&
+                  in->in(0)->Opcode() == Op_CallLeaf &&
+                  strcmp(in->in(0)->as_Call()->_name, "ShenandoahRuntime::oop_load_from_native_barrier") == 0)) {
         if (t == ShenandoahOopStore) {
           uint i = 0;
           for (; i < phis.size(); i++) {
@@ -527,7 +530,7 @@
         if (!verify_helper(n->in(TypeFunc::Parms), phis, visited, ShenandoahStore, trace, barriers_used)) {
           report_verify_failure("Shenandoah verification: _fill should have barriers", n);
         }
-      } else if (!strcmp(call->_name, "shenandoah_wb_pre")) {
+      } else if (!strcmp(call->_name, "shenandoah_wb_pre") || !strcmp(call->_name, "ShenandoahRuntime::oop_load_from_native_barrier")) {
         // skip
       } else {
         const int calls_len = sizeof(calls) / sizeof(calls[0]);