[jdk19] RFR: 8289069: Very slow C1 arraycopy jcstress tests after JDK-8279886

Tobias Hartmann thartmann at openjdk.org
Tue Jun 28 06:56:52 UTC 2022


On Sat, 25 Jun 2022 04:35:59 GMT, Igor Veresov <iveresov at openjdk.org> wrote:

> I used `BlockBegin::number_of_blocks()` to size the bitmaps, however that is a total number of blocks. Since `mark_loops()` is called after every inlining (for every inlinee - no need to reanalyze the whole method), the bitmaps get progressively larger, and have to be zeroed. That makes the complexity quadratic. The solution is to appropriately size the bitmaps and keep the whole thing linear. Tests look good.

Looks reasonable.

src/hotspot/share/c1/c1_GraphBuilder.cpp line 413:

> 411:   // never go back through the original loop header. Therefore if there are any irreducible loops the bits in the states
> 412:   // for these loops are going to propagate back to the root.
> 413:   BlockBegin* start = _bci2block->at(0);

There is a typo in line 408, that you might want to fix as well `irriducible` -> `irreducible`.

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

Marked as reviewed by thartmann (Reviewer).

PR: https://git.openjdk.org/jdk19/pull/72


More information about the hotspot-compiler-dev mailing list