RFR (S): 8011138: C2: stack overflow in compiler thread because of recursive inlining of lambda form methods

Christian Thalinger christian.thalinger at oracle.com
Thu Oct 3 11:21:50 PDT 2013

On Oct 3, 2013, at 1:40 AM, Roland Westrelin <roland.westrelin at oracle.com> wrote:

>> I was tempted to remove the InlineTree::_caller_jvms completely but that might be too intrusive for now.
> Why do you need to pass a jvms rather than use caller_jvms()?

InlineTree::_caller_jvms is not a deep clone of the JVMS and thus has no map; it's just used as a container for method and bci.  In fact, as I mentioned in my original email, we should remove InlineTree::_caller_jvms since it's not of much use but that's for another bug.

> Does a lambda form always have a receiver?

"receiver", yes.  The methods are static but the first argument is always a MethodHandle.

> You should probably use:
> caller_argument0->uncast() == callee_argument0->uncast()

I can but it's probably not necessary.  If it's truly a recursive call even the CheckCastPP node should be the same, right?

> Roland.

More information about the hotspot-compiler-dev mailing list