RFR: 8334779: Test compiler/c1/CanonicalizeArrayLength.java is timing out [v2]
Vladimir Kozlov
kvn at openjdk.org
Wed Jun 26 02:33:25 UTC 2024
> The timeout is cause by running the test with `-Xcomp -XX:+VerifyOops -XX:+PatchALot`.
> The test continuously deoptimize and recompile `java.lang.Throwable::<init>` method.
> `-XX:+VerifyOops ` adds a lot of external addresses because it use ExternallAddress for error messages.
> These messages are unique for each call to `verify_oop()` because they are constructed locally.
> I reduced number of loop iteration by 10 to get reasonable execution time (2 mins instead of 20 mins) and got next data:
>
> Without VerifyOops:
> External addresses table: 38 entries
>
> With VerifyOops:
> External addresses table: 125922 entries
>
> Looks like most of the time VM is spending to grow/reallocate big growable array added by [JDK-8333819](https://bugs.openjdk.org/browse/JDK-8333819).
> Before that change these addresses were recorded locally in nmethod's relocation info. When nmethod was deoptimized, its relocation info was discarded together with nmethod.
>
> Only on x86 we declared message address as ExternalAddress. Aarch64 uses movptr() to store address as simple pointer. ARM uses own InlineAddress with RelocInfo::none type of relocation. I verified other platforms: none is using ExternalAddress.
>
> I suggest to use AddressLiteral with RelocInfo::none for x86. With that the global table is small even with -XX:+VerifyOops:
>
> External addresses table: 42 entries
>
>
> Tested tier1, run test with corresponding flags to verify that time is similar to before [JDK-8333819](https://bugs.openjdk.org/browse/JDK-8333819)
Vladimir Kozlov has updated the pull request incrementally with one additional commit since the last revision:
Use external_word_Relocation::spec_for_immediate() instead of relocInfo::none
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/19871/files
- new: https://git.openjdk.org/jdk/pull/19871/files/dc586132..6da56e22
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=19871&range=01
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=19871&range=00-01
Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 mod
Patch: https://git.openjdk.org/jdk/pull/19871.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/19871/head:pull/19871
PR: https://git.openjdk.org/jdk/pull/19871
More information about the hotspot-dev
mailing list