Integrated: 8265126: [REDO] unified handling for VectorMask object re-materialization during de-optimization
Jatin Bhateja
jbhateja at openjdk.java.net
Wed May 19 05:22:39 UTC 2021
On Tue, 27 Apr 2021 18:01:17 GMT, Jatin Bhateja <jbhateja at openjdk.org> wrote:
> Following flow describes object reconstruction for de-optimization:-
>
> 1. PhaseVector::scalarize_vbox_node() creates SafePointScalarObjectNode to captures the box type information, also it connects to node holding the boxed value.
> 2. During code emit phase (PhaseOutput) C2 process above information to dumps ObjectValue holding the box information and LocationValue to holding the value information into ScopeDescriptor corresponding to Safepoint PC.
> 3. De-optimization blobs dump the value held in registers to the stack locations using RegisterSave::save_live_registers() and a mapping b/w register and its stack location is added to RegisterMap.
> 4. During de-optimization, compiled frame objects are re-allocated using identity information held in ObjectValue and their fields are initialized using values held in the stack locations accessed through register-stack mappings.
>
> By inserting a VectorStoreMaskNode before stitching the mask holding node to Safepoint we make sure that value held in opmask/vector register is transferred to a byte vector. Thus rest of the flow works as it is, stack location will hold the value in the form of a byte array irrespective of the box shape.
>
> tier1-tier3 regressions are clean with UseAVX=2/3.
This pull request has now been integrated.
Changeset: 65a8bf58
Author: Jatin Bhateja <jbhateja at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/65a8bf58bef1a3c50d434b0b351247b5a3a426cb
Stats: 74 lines in 3 files changed: 26 ins; 27 del; 21 mod
8265126: [REDO] unified handling for VectorMask object re-materialization during de-optimization
Reviewed-by: vlivanov
-------------
PR: https://git.openjdk.java.net/jdk/pull/3721
More information about the hotspot-compiler-dev
mailing list