RFR 8183130: [MVT] Implement intrinsics for Q-typed LambdaForms

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Wed Jul 5 13:50:02 UTC 2017


I've uploaded a new version which adds a small helper method on the 
lambda form code builder which can be used to create unique labels. This 
avoids the problem of having string concat in client code.

http://cr.openjdk.java.net/~mcimadamore/8183130_v3/

Maurizio


On 05/07/17 13:34, Vladimir Ivanov wrote:
> Looks nice!
>
> One comment:
>
> +    private Name emitLoop(int pos) {
> ...
> +        builder.label("LOOP");
> ..
> +                    .goto_("DONE")
> +                    .label("NEXT_" + c);
>
> Since lambda forms can be "extended" (see BoundMethodHandle.rebind() + 
> BMH.editor() usages), it's possible (at least, in theory) to have 
> multiple loop intrinsics in a single LF.
>
> I suggest to add position to LOOP, DONE, and NEXT labels to make them 
> unique in the context of a single lambda form:
>   "LOOP_"+pos
>   "DONE_"+pos)
>   "NEXT_" + pos + "_" + c
>
> (I hope string identifiers will be replaced with a dedicated Label 
> class to make it easier to create unique label identifiers).
>
> Best regards,
> Vladimir Ivanov
>
> On 7/5/17 3:19 PM, Maurizio Cimadamore wrote:
>> Hi,
>> I've done a bigger rewriting of the patch, (and I also removed the 
>> assertion). Now the organization is such that the intrinsic code can 
>> take more advantage of the fluent style of code builders - this is 
>> particularly evident in emitSelectAlternatives (but emitLoop has 
>> improved too).
>>
>> http://cr.openjdk.java.net/~mcimadamore/8183130_v2
>>
>> Maurizio
>>
>>
>> On 03/07/17 22:11, Maurizio Cimadamore wrote:
>>> I've missed that, sorry - I will remove the assertion
>>>
>>> Maurizio
>>>
>>>
>>> On 03/07/17 22:00, Vladimir Ivanov wrote:
>>>> From correctness POV, it's perfectly fine to miss an intrinsic 
>>>> opportunity. So, I'd prefer to avoid throwing an error until all 
>>>> intrinsics are implemented:
>>>>
>>>> +                default: {
>>>> +                    throw newInternalError("Unknown intrinsic: 
>>>> "+intr);
>>>> +                }
>>>>
>>>> Otherwise, looks good.
>>>>
>>>> Best regards,
>>>> Vladimir Ivanov
>>>>
>>>> On 7/3/17 5:27 PM, Maurizio Cimadamore wrote:
>>>>> Hi,
>>>>> This patch adds support for intrinsic in LambdaFormBuilder. More 
>>>>> intrinsics to come in separate followup patches.
>>>>>
>>>>> http://cr.openjdk.java.net/~mcimadamore/8183130/
>>>>>
>>>>> Thanks
>>>>> Maurizio
>>>>>
>>>>>
>>>
>>



More information about the valhalla-dev mailing list