RFR: 8265126: unified handling for VectorMask object re-materialization during de-optimization (re-submit) [v2]

Jatin Bhateja jbhateja at openjdk.java.net
Fri Apr 30 13:09:16 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.

Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains two additional commits since the last revision:

 - Merge http://github.com/openjdk/jdk into JDK-8265126
 - 8265126:[REDO] unified handling for VectorMask object re-materialization during de-optimization

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/3721/files
  - new: https://git.openjdk.java.net/jdk/pull/3721/files/b35e1345..70c03aa3

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=3721&range=01
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=3721&range=00-01

  Stats: 7915 lines in 259 files changed: 5651 ins; 1373 del; 891 mod
  Patch: https://git.openjdk.java.net/jdk/pull/3721.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/3721/head:pull/3721

PR: https://git.openjdk.java.net/jdk/pull/3721


More information about the hotspot-compiler-dev mailing list