RFR: 8265126: unified handling for VectorMask object re-materialization during de-optimization (re-submit)
jbhateja at openjdk.java.net
Tue Apr 27 18:24:44 UTC 2021
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.
- 8265126:[REDO] unified handling for VectorMask object re-materialization during de-optimization
Stats: 74 lines in 3 files changed: 26 ins; 26 del; 22 mod
Fetch: git fetch https://git.openjdk.java.net/jdk pull/3721/head:pull/3721
More information about the hotspot-compiler-dev