First C2 prototype for value types

Tobias Hartmann tobias.hartmann at oracle.com
Mon Oct 10 06:06:06 UTC 2016


Thanks, Fred!

Best regards,
Tobias

On 07.10.2016 20:01, Frederic Parain wrote:
> Done.
> 
> Fred
> 
> On 10/07/2016 12:20 PM, Tobias Hartmann wrote:
>> Hi Frederic,
>>
>> On 07.10.2016 16:43, Frederic Parain wrote:
>>> Hi Tobias,
>>>
>>> I can be the sponsor for your changes.
>>> Let we know when they are ready for pushing.
>>
>> Thanks! In my opinion the changes are ready to push.
>> As I mentioned, the implementation is experimental but shouldn't affect/break any existing code.
>>
>> Best regards,
>> Tobias
>>
>>> Fred
>>>
>>> On 10/07/2016 10:11 AM, Tobias Hartmann wrote:
>>>> Hi,
>>>>
>>>> I implemented a first very basic C2 prototype implementation of value types:
>>>> http://cr.openjdk.java.net/~thartmann/valhalla/vt_prototype/webrev.00/
>>>>
>>>> The changes mostly affect the C2 frontend and do not affect any non VT (byte-)code or other VM functionality.
>>>>
>>>> Here's a summary:
>>>> - Introduced ciValueKlass to represent a valueKlass in C2 and provide access to the value type field layout.
>>>> - Introduced a new Type TypeValueType and TypeValueTypePtr to represent a value type and a corresponding oop to the heap allocated value type in C2's type system.
>>>> - Introduced a ValueTypeNode to represent a value type in the C2 IR. It's a TypeNode with type TypeValueType and has the oop and the field values as input nodes.
>>>> - Support for vnew, vreturn, vgetfield, vload, vstore.
>>>> - Support for passing value types from interpreter to C2 compiled code and vice versa. This is done via oops.
>>>> - Other VT bytecodes are treated as corresponding Java object bytecodes (just for now, so we know where we need to make future changes)
>>>> - No support for VT arrays and flattening yet.
>>>> - No "real" optimizations.
>>>>
>>>> I implemented a jtreg test suite to ease testing of the C2 implementation:
>>>> http://cr.openjdk.java.net/~thartmann/valhalla/vt_prototype/webrev.00/test/compiler/valhalla/valuetypes/ValueTypeTestBench.java.html
>>>>
>>>> It supports basic matching on the C2 IR. The tests under
>>>> // ========== Test definitions ==========
>>>> work and C2 generates code for them. The C2 IR is printed for each test.
>>>>
>>>> Please be aware that this implementation is *very* limited and the only thing that should work are the tests in the suite. There are sill lot's of TODOs and FIXMEs but I would like to push this early version to allow other team members to build upon.
>>>>
>>>> I need a sponsor for this since I'm not Valhalla author/committer.
>>>>
>>>> Best regards,
>>>> Tobias
>>>>


More information about the valhalla-dev mailing list