RFR: 8279219: [REDO] C2 crash when allocating array of size too large [v3]
Roland Westrelin
roland at openjdk.java.net
Tue Feb 1 09:31:58 UTC 2022
> The new fix is largely similar to the previous one. 3 bugs were filed
> because of the previous change but there are only really 2 issues:
>
> - attaching the valid length condition at expansion time to the new
> array runtime call causes issues. With Shenandoah, passes of loop
> opts are executed after macro expansion but precedence edges are
> ignored when assigning controls to nodes which causes loop opts to
> incorrectly attempt to eliminate the node pointed to by the
> precedence edge. A similar issue occurs when the runtime call ends
> up in a subgraph that dies after macro expansion because the
> precedence edge is not cleared by dead code elimination which causes
> the runtime call to still be reachable. In the new patch, this is
> fixed by appending an extra input to the runtime call instead of
> using a precedence edge.
>
> - In the previous patch, a top valid length input is used when there's
> no valid length input that needs to be recorded. That can cause an
> assert failure during CCP. If valid length initially has type top,
> the CatchNode out of the AllocateArray then have type (control,
> control). If next, the valid length input becomes constant 0, the
> CatchNode has type (top, control). An assert catches that the type
> of the CatchNode doesn't widen. This fixed by using 1 by default as
> valid length input and tweaking CatchNode::Value.
>
> The new patch includes test cases for both issues.
Roland Westrelin 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 five additional commits since the last revision:
- review
- Merge branch 'master' into JDK-8279219
- review
- tests & fix
- Revert "8279204: [BACKOUT] JDK-8278413: C2 crash when allocating array of size too large"
This reverts commit 04ad668921abbd71dfbc474eed6f1760f7a541b1.
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/6952/files
- new: https://git.openjdk.java.net/jdk/pull/6952/files/b3cafb1d..541aa4ea
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=6952&range=02
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=6952&range=01-02
Stats: 31286 lines in 1169 files changed: 20818 ins; 5776 del; 4692 mod
Patch: https://git.openjdk.java.net/jdk/pull/6952.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/6952/head:pull/6952
PR: https://git.openjdk.java.net/jdk/pull/6952
More information about the hotspot-compiler-dev
mailing list