[lworld+vector] RFR: 8304310: Initial compilers and runtime handling for multifield backed vectors. [v13]

Xiaohong Gong xgong at openjdk.org
Wed May 10 07:58:52 UTC 2023


On Tue, 9 May 2023 19:03:54 GMT, Jatin Bhateja <jbhateja at openjdk.org> wrote:

>> src/hotspot/share/opto/compile.cpp line 2770:
>> 
>>> 2768:     TracePhase tp("", &timers[_t_vector]);
>>> 2769:     PhaseVector pv(igvn);
>>> 2770:     pv.optimize_vector_boxes();
>> 
>> `PhaseVector` does perform `PhaseRemoveUseless` (as part of `PhaseVector::do_cleanup()`). 
>> 
>> How does it interact with `remove_root_to_sfpts_edges` happening earlier:
>> 
>>   // Now that all inlining is over and no PhaseRemoveUseless will run, cut edge from root to loop
>>   // safepoints
>>   remove_root_to_sfpts_edges(igvn);
>
> Fixed, it was an left behind artifact of a previous check-in, its not moved after PhaseVector completion like in current implementation.

Why not handling the vector box optimizations before the `process_inline_types` like before? We can do the safepoint scalarize in `PhaseVector` for vector boxes, including the special handles for vector mask utility. Otherwise, we have to move the vector mask utility handling to `InlineTypeNode`, which looks weird. We can skip the vector boxes in `process_inline_types()`. Another benefit is most of the `VectorBoxNode` are eliminated before processing `InlineTypeNode`.

-------------

PR Review Comment: https://git.openjdk.org/valhalla/pull/833#discussion_r1189499893



More information about the valhalla-dev mailing list