RFR: 8271459: C2: Missing NegativeArraySizeException when creating StringBuilder with negative capacity [v2]
Tobias Hartmann
thartmann at openjdk.java.net
Wed Sep 29 06:28:37 UTC 2021
On Mon, 27 Sep 2021 07:37:34 GMT, Christian Hagedorn <chagedorn at openjdk.org> wrote:
>> Stringopts does not take into account that a negative `int` argument for `StringBuilder(int)` results in a `NegativeArraySizeException` when optimizing away `StringBuilder` usages into single strings.
>>
>> The suggested fix does the following:
>> - Bailout of Stringopts if C2 knows that an `int` argument is always negative.
>> - Apply stringopts but insert an additional runtime check with an UCT if C2 cannot tell if an `int` argument is positive or negative.
>>
>> I added some IR tests to verify the fix and also ran some standard benchmarks.
>>
>> I also updated `TestIRMatching` to test the new and updated default regexes.
>>
>> Thanks,
>> Christian
>
> Christian Hagedorn has updated the pull request incrementally with one additional commit since the last revision:
>
> Update UCT to Action_maybe_recompile
That looks good to me given that we check for `too_many_traps` in `StringConcat::validate_control_flow()`.
-------------
Marked as reviewed by thartmann (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/5652
More information about the hotspot-compiler-dev
mailing list