RFR (S): 8011138: C2: stack overflow in compiler thread because of recursive inlining of lambda form methods
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?
More information about the hotspot-compiler-dev