< prev index next >

src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp

Print this page
rev 55672 : 8227637: Adjust Shenandoah C2 verifier to recognize IN_NATIVE barriers

*** 206,216 **** } } else if (in->Opcode() == Op_LoadP && in->adr_type() == TypeRawPtr::BOTTOM) { if (trace) { tty->print("Found raw LoadP (OSR argument?)"); } ! } else if (in->Opcode() == Op_ShenandoahLoadReferenceBarrier) { if (t == ShenandoahOopStore) { uint i = 0; for (; i < phis.size(); i++) { Node* n = phis.node_at(i); if (n->Opcode() == Op_ShenandoahEnqueueBarrier) { --- 206,219 ---- } } else if (in->Opcode() == Op_LoadP && in->adr_type() == TypeRawPtr::BOTTOM) { if (trace) { tty->print("Found raw LoadP (OSR argument?)"); } ! } 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++) { Node* n = phis.node_at(i); if (n->Opcode() == Op_ShenandoahEnqueueBarrier) {
*** 525,535 **** } else if (strlen(call->_name) > 5 && !strcmp(call->_name + strlen(call->_name) - 5, "_fill")) { 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")) { // skip } else { const int calls_len = sizeof(calls) / sizeof(calls[0]); int i = 0; for (; i < calls_len; i++) { --- 528,538 ---- } else if (strlen(call->_name) > 5 && !strcmp(call->_name + strlen(call->_name) - 5, "_fill")) { 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") || !strcmp(call->_name, "ShenandoahRuntime::oop_load_from_native_barrier")) { // skip } else { const int calls_len = sizeof(calls) / sizeof(calls[0]); int i = 0; for (; i < calls_len; i++) {
< prev index next >