couple questions on method handle combinators

Paul Sandoz paul.sandoz at oracle.com
Mon Jun 12 19:27:22 UTC 2017


> On 12 Jun 2017, at 11:46, Roland Westrelin <rwestrel at redhat.com> wrote:
> 
> 
> Hi Paul,
> 
>> The GWT forms contain some special profiling logic for the boolean
>> branch and AFAICT counting forms for target invocation (of either
>> branch) are created to block the JIT inlining until they have been
>> called enough times. I believe for this logic to work correctly it
>> requires execution in the interpreter, otherwise the LF update may not
>> be visible, since final fields are trusted to be stable, once C2 gets
>> hold if it it will think it constant. Vladimir will know much more
>> than I.
> 
> AFAICT, that logic only keeps track of frequencies and so the invoke
> target is only constant if one of the branch is never taken.

I don’t fully understand it and would need to write some tests and look out compiler output.


> 
>> This might all be getting in the way of what you want to achieve. It
>> may be better for you to generate explicit byte code for that which
>> you want to test (similar to that of recent tests David added).
> 
> In the code shape that I'm interested in, return values must be passed
> as __Value which is only used by lambda forms.

Ah, i missed that aspect.

I suppose there is nothing stopping you generating byte code referring to __Value in method sigs.

To investigate further i think we need to write a separate smaller GWT test for both values and refs. I can write such a test if that helps? and may want be useful for MH analysis.

Paul.

> Also, if that code shape
> is never used in practice then there's nothing to optimize.
> 
> Roland.



More information about the valhalla-dev mailing list