decoupling interpreter buffers from the JIT's value processing

Vladimir Ivanov vladimir.x.ivanov at
Thu Jul 6 12:10:15 UTC 2017

On 7/6/17 2:57 PM, Roland Westrelin wrote:
>> For example, ValueTypeNode::allocate() can wrap the allocated buffer in
>> new kind of node (ValueTypePtrNode):
>>     VTP == ValueTypePtrNode # in: (buffer, f1, ..., fn), type: VT*
>> It mimics ValueTypeNode, but has a different type:
>>     VT  == ValueTypeNode # in: (buffer, f1, ..., fn), type: VT
> Looks like we came to the same conclusion. I'm in the process of
> implementing the ValueTypePtrNode that you describe. Works well with a

Awesome! Thanks a lot for prompt experiments!

> guard with test simple test. Doesn't eliminate the allocations in your
> test yet.

By looking at IR for VectorTest::sunArrayL2 I came to the conclusion 
that 2 steps should be enough to eliminate remaining allocations there:
   (1) merge through phi;
   (2) rematerialization (at uncommon trap)

Best regards,
Vladimir Ivanov

More information about the valhalla-dev mailing list