Integrated: 8264954: unified handling for VectorMask object re-materialization during de-optimization

Jatin Bhateja jbhateja at
Mon Apr 12 12:17:48 UTC 2021

On Fri, 9 Apr 2021 07:25:11 GMT, Jatin Bhateja <jbhateja at> 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: f71be8b5
Author:    Jatin Bhateja <jbhateja at>
Stats:     66 lines in 3 files changed: 22 ins; 22 del; 22 mod

8264954: unified handling for VectorMask object re-materialization during de-optimization

Reviewed-by: vlivanov



More information about the hotspot-compiler-dev mailing list