RFR: 8275086: compiler/c2/irTests/TestPostParseCallDevirtualization.java fails when compiler1 is disabled
SUN Guoyun
duke at openjdk.java.net
Tue Oct 12 07:25:49 UTC 2021
On Tue, 12 Oct 2021 02:49:53 GMT, SUN Guoyun <duke at openjdk.java.net> wrote:
> Hi all,
> Jtreg test case compiler/c2/irTests/TestPostParseCallDevirtualization.java fails for fastdebug mode on x86/aarch64/mips architecture when "--with-jvm-features=-compiler1" be used. the failed info is:
>
> <pre><code class="shell">
> One or more @IR rules failed:
>
> Failed IR Rules (1)
> ------------------
> - Method "public int compiler.c2.irTests.TestPostParseCallDevirtualization.testMethodHandleCallWithCCP() throws java.lang.Throwable":
> * @IR rule 1: "@compiler.lib.ir_framework.IR(failOn={"#PRE#(\\\\d+(\\\\s){2}(CallStaticJava.*)+(\\\\s){2}===.*#IS_REPLACED#)", "invokeBasic"}, applyIf={}, applyIfAnd={}, applyIfOr={}, counts={"#PRE#(\\\\d+(\\\\s){2}(CallStaticJava.*)+(\\\\s){2}===.*#IS_REPLACED#)", "invokeStatic", "= 1"}, applyIfNot={})"
> - failOn: Graph contains forbidden nodes:
> Regex 1: (\\d+(\\s){2}(CallStaticJava.*)+(\\s){2}===.*invokeBasic)
> Matched forbidden node:
> 280 CallStaticJava === 5 6 7 8 1 ( 188 1 1 1 1 1 1 ) [[ 281 282 283 285 ]] # Static java.lang.invoke.MethodHandle::invokeBasic
> - counts: Graph contains wrong number of nodes:
> Regex 1: (\\d+(\\s){2}(CallStaticJava.*)+(\\s){2}===.*invokeStatic)
> Expected 1 but found 0 nodes.
>
>>>> Check stdout for compilation output of the failed methods
> </code></pre>
>
> This is a patch to fix this problem. Please help review it.
>
> Thanks,
> Sun Guoyun
I found the compilation info with c1 is:
`
937 b 3 compiler.c2.irTests.TestPostParseCallDevirtualization::testMethodHandleCallWithCCP (50 bytes)
938 b 1 compiler.c2.irTests.TestPostParseCallDevirtualization::method2 (3 bytes)
939 b 3 java.lang.reflect.Method::getParameterCount (6 bytes)
940 b 3 java.lang.reflect.Method::invoke (65 bytes)
941 b 3 jdk.internal.reflect.DelegatingMethodAccessorImpl::invoke (10 bytes)
942 !b 3 compiler.lib.ir_framework.test.CustomRunTest::invokeTest (76 bytes)
943 b 3 jdk.test.lib.Asserts::assertEquals (7 bytes)
944 !b 3 jdk.internal.reflect.GeneratedMethodAccessor1::invoke (62 bytes)
945 b 3 java.lang.invoke.LambdaForm$DMH/0x00000008000e3c00::invokeStatic (20 bytes)
946 b 3 jdk.test.lib.Asserts::assertEquals (42 bytes)
947 b 4 compiler.c2.irTests.TestPostParseCallDevirtualization::testMethodHandleCallWithCCP (50 bytes)
`
here compile id 945 be called.
but the info without c1 is:
`
254 n java.lang.invoke.MethodHandle::invokeBasic()I (native)
255 b java.lang.invoke.MethodHandleImpl::isCompileConstant (2 bytes)
256 b compiler.c2.irTests.TestPostParseCallDevirtualization::method2 (3 bytes)
257 b compiler.c2.irTests.TestPostParseCallDevirtualization::testMethodHandleCallWithCCP (50 bytes)
`
the compile id 254 be called
-------------
PR: https://git.openjdk.java.net/jdk/pull/5903
More information about the hotspot-compiler-dev
mailing list