8227637: Adjust Shenandoah C2 verifier to recognize IN_NATIVE barriers

Reviewed-by: roland
This commit is contained in:
Roman Kennke 2019-07-15 12:31:35 +02:00
parent 2169215b29
commit 02a90281ec

View File

@ -208,7 +208,10 @@ bool ShenandoahBarrierC2Support::verify_helper(Node* in, Node_Stack& phis, Vecto
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 @@ void ShenandoahBarrierC2Support::verify(RootNode* root) {
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]);