MVT-based vectors: first stab

Paul Sandoz paul.sandoz at oracle.com
Wed Jun 28 16:34:37 UTC 2017


> On 28 Jun 2017, at 09:17, Vladimir Ivanov <vladimir.x.ivanov at oracle.com> wrote:
> 
>> Nice work.
>> I notice for the factory you are chaining a sequence of findWithers (vwithfield), one for each field. I am guessing if you construct via the VCC and then unbox that might cause issues with temporary boxing?
> 
> Yes, I deliberately tried to avoid any unnecessary boxing to make JIT-compiler life easier. The main question I had when starting the experiment was is it possible to completely avoid/eliminate boxing/buffering in generated code. Because absence of boxing/buffering operations in generated code is crucial for vectors.
> 
>> I think it would be useful to add that functionality to ValueType (with the caveat as with findWither that the VCC constructor is bypassed, which works fine for “vanilla” VCCs that just put fields and have no constraints). If necessary we could spin specific byte code using the builder to reduce the LF and invocation ceremony.
> 
> Yes, it looks like a good candidate for inclusion. Method handle chain is quite complex, so it'll definitely benefit from specialized bytecode (vdefault; vwithfield DVT.f1; ...; vwithfield DVT.fn; vreturn;)
> 

Ok, if that does not interfere with what you are doing i can log an issue and implement/test that.

Paul.


More information about the valhalla-dev mailing list