8308105: Multi-array allocations are very slow#30550
8308105: Multi-array allocations are very slow#30550bulasevich wants to merge 2 commits intoopenjdk:masterfrom
Conversation
|
👋 Welcome back bulasevich! A progress list of the required criteria for merging this PR into |
|
❗ This change is not yet ready to be integrated. |
|
@bulasevich The following label will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing list. If you would like to change these labels, use the /label pull request command. |
src/hotspot/share/opto/parse3.cpp
Outdated
|
@bulasevich |
|
@bulasevich this pull request can not be integrated into git checkout multiarray3
git fetch https://git.openjdk.org/jdk.git master
git merge FETCH_HEAD
# resolve conflicts and follow the instructions given by git merge
git commit -m "Merge master"
git push |
Multidimensional array allocations such as new int[n1][n2] are very slow because HotSpot routes them through a runtime call (multianewarray) that allocates the outer array and each subarray sequentially.
For constant-size cases like new int[2][2], C2 already optimizes during the parse phase by inlining a fixed number of AllocateArray nodes. This change extends that optimization to the variable-size 2D case. When ndimensions == 2, Parse::do_multianewarray now calls Parse::init_array2d, which builds an equivalent C2 IR graph:
The performance result is like this:
Status:
Progress
Issue
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/30550/head:pull/30550$ git checkout pull/30550Update a local copy of the PR:
$ git checkout pull/30550$ git pull https://git.openjdk.org/jdk.git pull/30550/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 30550View PR using the GUI difftool:
$ git pr show -t 30550Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/30550.diff