src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp
changeset 55678 296560a21cea
parent 55146 aa5eeb1a9871
child 55679 aa96c53c592b
equal deleted inserted replaced
55677:4b1de39beda3 55678:296560a21cea
   206         }
   206         }
   207       } else if (in->Opcode() == Op_LoadP && in->adr_type() == TypeRawPtr::BOTTOM) {
   207       } else if (in->Opcode() == Op_LoadP && in->adr_type() == TypeRawPtr::BOTTOM) {
   208         if (trace) {
   208         if (trace) {
   209           tty->print("Found raw LoadP (OSR argument?)");
   209           tty->print("Found raw LoadP (OSR argument?)");
   210         }
   210         }
   211       } else if (in->Opcode() == Op_ShenandoahLoadReferenceBarrier) {
   211       } else if (in->Opcode() == Op_ShenandoahLoadReferenceBarrier ||
       
   212                  (in->Opcode() == Op_Proj &&
       
   213                   in->in(0)->Opcode() == Op_CallLeaf &&
       
   214                   strcmp(in->in(0)->as_Call()->_name, "ShenandoahRuntime::oop_load_from_native_barrier") == 0)) {
   212         if (t == ShenandoahOopStore) {
   215         if (t == ShenandoahOopStore) {
   213           uint i = 0;
   216           uint i = 0;
   214           for (; i < phis.size(); i++) {
   217           for (; i < phis.size(); i++) {
   215             Node* n = phis.node_at(i);
   218             Node* n = phis.node_at(i);
   216             if (n->Opcode() == Op_ShenandoahEnqueueBarrier) {
   219             if (n->Opcode() == Op_ShenandoahEnqueueBarrier) {
   525       } else if (strlen(call->_name) > 5 &&
   528       } else if (strlen(call->_name) > 5 &&
   526                  !strcmp(call->_name + strlen(call->_name) - 5, "_fill")) {
   529                  !strcmp(call->_name + strlen(call->_name) - 5, "_fill")) {
   527         if (!verify_helper(n->in(TypeFunc::Parms), phis, visited, ShenandoahStore, trace, barriers_used)) {
   530         if (!verify_helper(n->in(TypeFunc::Parms), phis, visited, ShenandoahStore, trace, barriers_used)) {
   528           report_verify_failure("Shenandoah verification: _fill should have barriers", n);
   531           report_verify_failure("Shenandoah verification: _fill should have barriers", n);
   529         }
   532         }
   530       } else if (!strcmp(call->_name, "shenandoah_wb_pre")) {
   533       } else if (!strcmp(call->_name, "shenandoah_wb_pre") || !strcmp(call->_name, "ShenandoahRuntime::oop_load_from_native_barrier")) {
   531         // skip
   534         // skip
   532       } else {
   535       } else {
   533         const int calls_len = sizeof(calls) / sizeof(calls[0]);
   536         const int calls_len = sizeof(calls) / sizeof(calls[0]);
   534         int i = 0;
   537         int i = 0;
   535         for (; i < calls_len; i++) {
   538         for (; i < calls_len; i++) {