[lworld+vector] RFR: 8311610: [lworld+vector] Clean-up of vector allocation in class VectorSupport [v2]
Xiaohong Gong
xgong at openjdk.org
Fri Jul 7 13:14:33 UTC 2023
> PR [1] has added the vector supports for field re-assigning after object re-allocation in `deoptimization.cpp`. The similar vector
> and vector payload re-allocation code in `vectorSupport.cpp` can be removed now.
>
> Besides, there is an issue in current vector payload allocation code in `vectorSupport.cpp`, that the multi-fields are forgotten
> to be assigned after the payload object is allocated (see [2]). This method is called separately during deoptimization (see [3]).
> This makes several Vector API jtreg test results incorrect. And either assigning the fields by calling `Deoptimization::reassign_fields_by_klass()` after it or directly going to the normal re-allocation path in `deoptimization.cpp` can fix the issue. I prefer the latter one. Hence the similar code in `vectorSupport.cpp` is needless and can be removed.
>
> This patch also fixes a crash when printing out the JVM state, which is caused by the additional multi-fields passed to a safepoint. Normally, the fields number passed to a safepoint is the same with the klass's non-static fields number. But it's different for multi-fields. Only the `multifield_base` is added to the klass's non-static field list. Hence if all the un-vectorized multi-fields are passed to a safepoint, the fields number is larger than the klass's non-static fields number. And the array access at [4] throws exception due to out of range index.
>
> [1] https://github.com/openjdk/valhalla/pull/866
> [2] https://github.com/openjdk/valhalla/blob/lworld%2Bvector/src/hotspot/share/prims/vectorSupport.cpp#L281
> [3] https://github.com/openjdk/valhalla/blob/lworld%2Bvector/src/hotspot/share/runtime/deoptimization.cpp#L1282
> [4] https://github.com/openjdk/valhalla/blob/lworld%2Bvector/src/hotspot/share/opto/callnode.cpp#L527
Xiaohong Gong has updated the pull request incrementally with one additional commit since the last revision:
Set larval state for inline type objects
-------------
Changes:
- all: https://git.openjdk.org/valhalla/pull/882/files
- new: https://git.openjdk.org/valhalla/pull/882/files/879a524e..df73fc82
Webrevs:
- full: https://webrevs.openjdk.org/?repo=valhalla&pr=882&range=01
- incr: https://webrevs.openjdk.org/?repo=valhalla&pr=882&range=00-01
Stats: 8 lines in 1 file changed: 8 ins; 0 del; 0 mod
Patch: https://git.openjdk.org/valhalla/pull/882.diff
Fetch: git fetch https://git.openjdk.org/valhalla.git pull/882/head:pull/882
PR: https://git.openjdk.org/valhalla/pull/882
More information about the valhalla-dev
mailing list