[lworld+vector] Integrated: Merge lworld

Jatin Bhateja jbhateja at openjdk.org
Thu Apr 17 10:05:14 UTC 2025


Merge latest lworld code into lworld+vector

Commit Notes:-
=============
- Removed @ImplicitlyConstructibleValue annotation from all VectorPayloadMF* classes.
- Annotated multifield backed payload with @Strict annotation.
- Re-alignment of the new shuffle implementation with multifield-backed payloads.
- Fine tuning to skip over value forwarding vector boxes to handle non-flat payloads with -XX:-UseNonAtomicValueFlattening) in see_through_inline_type.
- Fix in PhaseMacroExpand::eliminate_allocate_node to skip over the elimination of larval allocations.
- New InlineTypeNode Identity transform to forward VectorBoxes tied to oop fields.
  Such patterns are generated during incremental inlining when vector intrinsic call is replaced
  by an equivalent VetorBoxNode. At this point, we don't require rematerializing InlineTypeNode chain
  earlier tied to vector oop returned by intrinsic call.
- Turning off AbortVMOnCompilationFailure for test/hotspot/jtreg/compiler/vectorapi/VectorMemoryAlias.java 
  to avoid test failures due to compilation bailouts related make/finish private buffer intrinsic.

Functional Validation:-
==============

Valhalla JTREG tests configuration tested:-
  1. Default Settings                          [2 FAILURES
compiler/valhalla/inlinetypes/TestFieldNullMarkers.java                                                                                                     compiler/valhalla/inlinetypes/TestLWorld.java  
 ]
  2. With -XX:+DeoptimizeALot -XX:+SafePointALot    [4 FAILURES]
compiler/valhalla/inlinetypes/TestAllocationMergeAndFolding.java
compiler/valhalla/inlinetypes/TestC2CCalls.java
compiler/valhalla/inlinetypes/TestFieldNullMarkers.java
compiler/valhalla/inlinetypes/TestLWorld.java ]

VectorAPI JTREG test configurations tested:-
  1. Default Settings -                                                    [ALL GREEN]
  2. With -XX:+DeoptimizeALot -XX:+SafePointALot    [ Intermittent failures ]
  3. With-XX:-UseNonAtomicValueFlattening                [ALL GREEN except 1 failure compiler/vectorapi/TestReverseByteTransforms.java on KNL]

Additional Notes:-
============
- With the removal of the flat field size capping runtime flag 'InlineTypeMaxFlatSize', all vector payload fields
  by default have a flat layout within concrete vector containers. 
- Since VectorPayloadMF* classes are decorated with LooselyConsistentValue annotation and payload fields are marked
  as @NullRestricted with @Strict field semantics, the only way to prevent payload flattening is through  runtime flag  -XX:-UseNonAtomicValueFlattening.
 
  
Performance:-
============
Fixed redundant boxing hitting performance of almost all vector kernels. After incremental inlining, VectorBox was getting connected to safepoint nodes through a series of InlineTypeNodes, which were materialized from the return value of CallStaticJavaNode IR created for vector intrinsic entry points after parsing.  Removing redundantly materialized InlineTypeNode through an InlineTypeNode::Identity transform directly connects the VectorBoxNode to the Safepoint, thereby enabling box elimination. 

All pending failures will be fixed in subsequent bug-fix pull requests.

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

Commit messages:
 - jcheck failure fixes
 - Merge branch 'lworld' of http://github.com/openjdk/valhalla into merge_lworld
 - Merge lworld
 - Merge lworld
 - Merge lworld
 - Merge lworld
 - JDK 8327435: [lworld+vector] Align existing Vector API support with JEP 401
 - Merge lworld
 - 8319945: [lworld+vector] Fix vector api jtreg crash with "-XX:-EnableVectorSupport"
 - 8319972: [lworld+vector] Enable intrinsification of Unsafe.finishPrivateBuffer.
 - ... and 15 more: https://git.openjdk.org/valhalla/compare/0e899b25...9138e781

The merge commit only contains trivial merges, so no merge-specific webrevs have been generated.

Changes: https://git.openjdk.org/valhalla/pull/1436/files
  Stats: 12319 lines in 273 files changed: 4936 ins; 2498 del; 4885 mod
  Patch: https://git.openjdk.org/valhalla/pull/1436.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/1436/head:pull/1436

PR: https://git.openjdk.org/valhalla/pull/1436


More information about the valhalla-dev mailing list