RFR: 8336726: C2: assert(!do_asserts || projs->fallthrough_ioproj != nullptr) failed: must be found

Tobias Hartmann thartmann at openjdk.org
Fri Oct 11 07:56:50 UTC 2024


Post-parse call devirtualization asserts when calling `CallNode::extract_projections` on a virtual call that does not have the `fallthrough_ioproj` anymore. The projection was removed because the call is followed by an endless loop that does not have any IO uses.

Similar to incremental inlining, we should not assert that all call projections are still there for post-parse call devirtualization because parts of the graph might have been removed already:
https://github.com/openjdk/jdk/blob/580eb62dc097efeb51c76b095c1404106859b673/src/hotspot/share/opto/callnode.cpp#L963-L965

Thanks,
Tobias

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

Commit messages:
 - Fix
 - 8336726: C2: assert(\!do_asserts || projs->fallthrough_ioproj \!= nullptr) failed: must be found

Changes: https://git.openjdk.org/jdk/pull/21450/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=21450&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8336726
  Stats: 83 lines in 4 files changed: 77 ins; 0 del; 6 mod
  Patch: https://git.openjdk.org/jdk/pull/21450.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/21450/head:pull/21450

PR: https://git.openjdk.org/jdk/pull/21450


More information about the hotspot-compiler-dev mailing list