RFR: 8146416: java.lang.OutOfMemoryError triggers: assert(current_bci == 0) failed: bci isn't zero for do_not_unlock_if_synchronized

Jamsheed C m jamsheed.c.m at oracle.com
Thu Jun 2 08:46:57 UTC 2016



On 6/2/2016 1:47 PM, Roland Westrelin wrote:
>>> So given uncommon traps are unaffected and only deopts are, isn't the
>>> change below good enough?
>> uncommon traps are affected in  JVMCI case. pending exception check is
>> after jvmci lock code.
> That code in TemplateInterpreterGenerator::generate_deopt_entry_for()?
>
> #if INCLUDE_JVMCI
>    // Check if we need to take lock at entry of synchronized method.
>    if (UseJVMCICompiler) {
>      Label L;
>      __ cmpb(Address(thread, JavaThread::pending_monitorenter_offset()), 0);
>      __ jcc(Assembler::zero, L);
>      // Clear flag.
>      __ movb(Address(thread, JavaThread::pending_monitorenter_offset()), 0);
>      // Satisfy calling convention for lock_method().
>      __ get_method(rbx);
>      // Take lock.
>      lock_method();
>      __ bind(L);
>    }
> #endif
Yes.

Best Regards,
Jamsheed
>
> Roland.



More information about the hotspot-compiler-dev mailing list