RFR: 8263125: During deoptimization vectors should reassign scalarized payload after all objects are reallocated.

Vladimir Kozlov kvn at openjdk.java.net
Wed Mar 10 20:04:19 UTC 2021


Currently during deoptimization Vector's `payload` field values are restored during Vector reallocation: 
https://github.com/openjdk/jdk/blob/master/src/hotspot/share/prims/vectorSupport.cpp#L155 

But for scalar-replaced values this is not correct because payload box object could be re-allocated after allocation of this vector. Scalar-replaced `payload` should be restored during regular fields reassignment (`Deoptimization::reassign_fields()` change).

I renamed incorrect `eliminate_*` names for methods which restore/reallocate objects and locks.

I added checks for EliminateAutoBox and EnableVectorAggressiveReboxing optimizations which can replace allocations with scalar objects independent from Escape Analysis. 
 
I added prints for unexpected StackValue values (stackValue.cpp) and for Vector debug info location type (location.cpp).

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

Commit messages:
 - 8263125: During deoptimization vectors should reassign scalarized payload after all objects are reallocated.

Changes: https://git.openjdk.java.net/jdk/pull/2924/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=2924&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8263125
  Stats: 38 lines in 3 files changed: 20 ins; 4 del; 14 mod
  Patch: https://git.openjdk.java.net/jdk/pull/2924.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/2924/head:pull/2924

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


More information about the hotspot-dev mailing list