< prev index next >

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

Print this page

        

*** 1029,1039 **** { -1, ShenandoahNone}, { -1, ShenandoahNone}, { -1, ShenandoahNone} }, }; if (call->is_call_to_arraycopystub()) { Node* dest = NULL; ! const TypeTuple* args = n->as_Call()->_tf->domain(); for (uint i = TypeFunc::Parms, j = 0; i < args->cnt(); i++) { if (args->field_at(i)->isa_ptr()) { j++; if (j == 2) { dest = n->in(i); --- 1029,1039 ---- { -1, ShenandoahNone}, { -1, ShenandoahNone}, { -1, ShenandoahNone} }, }; if (call->is_call_to_arraycopystub()) { Node* dest = NULL; ! const TypeTuple* args = n->as_Call()->_tf->domain_sig(); for (uint i = TypeFunc::Parms, j = 0; i < args->cnt(); i++) { if (args->field_at(i)->isa_ptr()) { j++; if (j == 2) { dest = n->in(i);
*** 1155,1165 **** for (; i < others_len; i++) { if (others[i].opcode == n->Opcode()) { break; } } ! uint stop = n->is_Call() ? n->as_Call()->tf()->domain()->cnt() : n->req(); if (i != others_len) { const uint inputs_len = sizeof(others[0].inputs) / sizeof(others[0].inputs[0]); for (uint j = 0; j < inputs_len; j++) { int pos = others[i].inputs[j].pos; if (pos == -1) { --- 1155,1165 ---- for (; i < others_len; i++) { if (others[i].opcode == n->Opcode()) { break; } } ! uint stop = n->is_Call() ? n->as_Call()->tf()->domain_sig()->cnt() : n->req(); if (i != others_len) { const uint inputs_len = sizeof(others[0].inputs) / sizeof(others[0].inputs[0]); for (uint j = 0; j < inputs_len; j++) { int pos = others[i].inputs[j].pos; if (pos == -1) {
*** 2312,2333 **** } } } } else { if (c->is_Call() && c->as_Call()->adr_type() != NULL) { ! CallProjections projs; ! c->as_Call()->extract_projections(&projs, true, false); ! if (projs.fallthrough_memproj != NULL) { ! if (projs.fallthrough_memproj->adr_type() == TypePtr::BOTTOM) { ! if (projs.catchall_memproj == NULL) { ! mem = projs.fallthrough_memproj; } else { ! if (phase->is_dominator(projs.fallthrough_catchproj, ctrl)) { ! mem = projs.fallthrough_memproj; } else { ! assert(phase->is_dominator(projs.catchall_catchproj, ctrl), "one proj must dominate barrier"); ! mem = projs.catchall_memproj; } } } } else { Node* proj = c->as_Call()->proj_out(TypeFunc::Memory); --- 2312,2332 ---- } } } } else { if (c->is_Call() && c->as_Call()->adr_type() != NULL) { ! CallProjections* projs = c->as_Call()->extract_projections(true, false); ! if (projs->fallthrough_memproj != NULL) { ! if (projs->fallthrough_memproj->adr_type() == TypePtr::BOTTOM) { ! if (projs->catchall_memproj == NULL) { ! mem = projs->fallthrough_memproj; } else { ! if (phase->is_dominator(projs->fallthrough_catchproj, ctrl)) { ! mem = projs->fallthrough_memproj; } else { ! assert(phase->is_dominator(projs->catchall_catchproj, ctrl), "one proj must dominate barrier"); ! mem = projs->catchall_memproj; } } } } else { Node* proj = c->as_Call()->proj_out(TypeFunc::Memory);
*** 3756,3773 **** Node* MemoryGraphFixer::get_ctrl(Node* n) const { Node* c = _phase->get_ctrl(n); if (n->is_Proj() && n->in(0) != NULL && n->in(0)->is_Call()) { assert(c == n->in(0), ""); CallNode* call = c->as_Call(); ! CallProjections projs; ! call->extract_projections(&projs, true, false); ! if (projs.catchall_memproj != NULL) { ! if (projs.fallthrough_memproj == n) { ! c = projs.fallthrough_catchproj; } else { ! assert(projs.catchall_memproj == n, ""); ! c = projs.catchall_catchproj; } } } return c; } --- 3755,3771 ---- Node* MemoryGraphFixer::get_ctrl(Node* n) const { Node* c = _phase->get_ctrl(n); if (n->is_Proj() && n->in(0) != NULL && n->in(0)->is_Call()) { assert(c == n->in(0), ""); CallNode* call = c->as_Call(); ! CallProjections* projs = call->extract_projections(true, false); ! if (projs->catchall_memproj != NULL) { ! if (projs->fallthrough_memproj == n) { ! c = projs->fallthrough_catchproj; } else { ! assert(projs->catchall_memproj == n, ""); ! c = projs->catchall_catchproj; } } } return c; }
< prev index next >