RFR 8183130: [MVT] Implement intrinsics for Q-typed LambdaForms
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Wed Jul 5 14:16:17 UTC 2017
Even better!
Best regards,
Vladimir Ivanov
On 7/5/17 4:50 PM, Maurizio Cimadamore wrote:
> 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