src/share/vm/opto/callnode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6775880 Cdiff src/share/vm/opto/callnode.cpp

src/share/vm/opto/callnode.cpp

Print this page

        

*** 393,404 **** st->print(" MON-BOX%d=%s+%d", i, OptoReg::regname(OptoReg::c_frame_pointer), regalloc->reg2offset(box_reg)); } ! format_helper( regalloc, st, obj, "MON-OBJ[", i, &scobjs ); } for (i = 0; i < (uint)scobjs.length(); i++) { // Scalar replaced objects. st->print_cr(""); st->print(" # ScObj" INT32_FORMAT " ", i); --- 393,410 ---- st->print(" MON-BOX%d=%s+%d", i, OptoReg::regname(OptoReg::c_frame_pointer), regalloc->reg2offset(box_reg)); } ! const char* obj_msg = "MON-OBJ["; ! if (EliminateLocks) { ! while( !box->is_BoxLock() ) box = box->in(1); ! if (box->as_BoxLock()->is_eliminated()) ! obj_msg = "MON-OBJ(LOCK ELIMINATED)["; } + format_helper( regalloc, st, obj, obj_msg, i, &scobjs ); + } for (i = 0; i < (uint)scobjs.length(); i++) { // Scalar replaced objects. st->print_cr(""); st->print(" # ScObj" INT32_FORMAT " ", i);
*** 906,917 **** int nextmon = jvms()->scloff(); if (GenerateSynchronizationCode) { add_req(lock->box_node()); add_req(lock->obj_node()); } else { ! add_req(NULL); ! add_req(NULL); } jvms()->set_scloff(nextmon+MonitorEdges); jvms()->set_endoff(req()); } --- 912,924 ---- int nextmon = jvms()->scloff(); if (GenerateSynchronizationCode) { add_req(lock->box_node()); add_req(lock->obj_node()); } else { ! Node* top = Compile::current()->top(); ! add_req(top); ! add_req(top); } jvms()->set_scloff(nextmon+MonitorEdges); jvms()->set_endoff(req()); }
*** 1380,1390 **** // one computed above. if (result == NULL && can_reshape && EliminateLocks && !is_eliminated()) { // // If we are locking an unescaped object, the lock/unlock is unnecessary // ! ConnectionGraph *cgr = Compile::current()->congraph(); PointsToNode::EscapeState es = PointsToNode::GlobalEscape; if (cgr != NULL) es = cgr->escape_state(obj_node(), phase); if (es != PointsToNode::UnknownEscape && es != PointsToNode::GlobalEscape) { // Mark it eliminated to update any counters --- 1387,1397 ---- // one computed above. if (result == NULL && can_reshape && EliminateLocks && !is_eliminated()) { // // If we are locking an unescaped object, the lock/unlock is unnecessary // ! ConnectionGraph *cgr = phase->C->congraph(); PointsToNode::EscapeState es = PointsToNode::GlobalEscape; if (cgr != NULL) es = cgr->escape_state(obj_node(), phase); if (es != PointsToNode::UnknownEscape && es != PointsToNode::GlobalEscape) { // Mark it eliminated to update any counters
*** 1448,1457 **** --- 1455,1465 ---- for (int i = 0; i < lock_ops.length(); i++) { AbstractLockNode* lock = lock_ops.at(i); // Mark it eliminated to update any counters lock->set_eliminated(); + lock->set_coarsened(); } } else if (result != NULL && ctrl->is_Region() && iter->_worklist.member(ctrl)) { // We weren't able to find any opportunities but the region this // lock is control dependent on hasn't been processed yet so put
*** 1482,1492 **** // Escape state is defined after Parse phase. if (result == NULL && can_reshape && EliminateLocks && !is_eliminated()) { // // If we are unlocking an unescaped object, the lock/unlock is unnecessary. // ! ConnectionGraph *cgr = Compile::current()->congraph(); PointsToNode::EscapeState es = PointsToNode::GlobalEscape; if (cgr != NULL) es = cgr->escape_state(obj_node(), phase); if (es != PointsToNode::UnknownEscape && es != PointsToNode::GlobalEscape) { // Mark it eliminated to update any counters --- 1490,1500 ---- // Escape state is defined after Parse phase. if (result == NULL && can_reshape && EliminateLocks && !is_eliminated()) { // // If we are unlocking an unescaped object, the lock/unlock is unnecessary. // ! ConnectionGraph *cgr = phase->C->congraph(); PointsToNode::EscapeState es = PointsToNode::GlobalEscape; if (cgr != NULL) es = cgr->escape_state(obj_node(), phase); if (es != PointsToNode::UnknownEscape && es != PointsToNode::GlobalEscape) { // Mark it eliminated to update any counters
src/share/vm/opto/callnode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File