[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