< prev index next >

src/share/vm/opto/loopnode.cpp

Print this page
rev 10955 : undo
rev 11689 : 8161147: jvm crashes when -XX:+UseCountedLoopSafepoints is enabled
Summary: With UseCountedLoopSafepoints on do not convert loops to counted loop if they have a safepoint on the backedge
Reviewed-by:

*** 277,288 **** // Must also check for TOP when looking for a dead loop if (init_control->is_top() || back_control->is_top()) return false; // Allow funny placement of Safepoint ! if (back_control->Opcode() == Op_SafePoint) back_control = back_control->in(TypeFunc::Control); // Controlling test for loop Node *iftrue = back_control; uint iftrue_op = iftrue->Opcode(); if (iftrue_op != Op_IfTrue && --- 277,296 ---- // Must also check for TOP when looking for a dead loop if (init_control->is_top() || back_control->is_top()) return false; // Allow funny placement of Safepoint ! if (back_control->Opcode() == Op_SafePoint) { ! if (UseCountedLoopSafepoints) { ! // Leaving the safepoint on the backedge and creating a ! // CountedLoop will confuse optimizations. We can't move the ! // safepoint around because its jvm state wouldn't match a new ! // location. Give up on that loop. ! return false; ! } back_control = back_control->in(TypeFunc::Control); + } // Controlling test for loop Node *iftrue = back_control; uint iftrue_op = iftrue->Opcode(); if (iftrue_op != Op_IfTrue &&
< prev index next >