RFR: 8275086: compiler/c2/irTests/TestPostParseCallDevirtualization.java fails when compiler1 is disabled

SUN Guoyun duke at openjdk.java.net
Thu Oct 14 07:46:52 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

Maybe the FAIL caused by `call_site_count = -1`, after the code is modified as follows, then test case passed


--- a/src/hotspot/share/opto/callGenerator.cpp
+++ b/src/hotspot/share/opto/callGenerator.cpp
@@ -1049,7 +1049,8 @@ CallGenerator* CallGenerator::for_method_handle_call(JVMState* jvms, ciMethod* c
   ciCallProfile profile = caller->call_profile_at_bci(bci);
   int call_site_count = caller->scale_count(profile.count());
 
-  if (IncrementalInlineMH && call_site_count > 0 &&
+  if (IncrementalInlineMH && /*call_site_count > 0 &&*/
       (input_not_const || !C->inlining_incrementally() || C->over_inlining_cutoff())) {
     return CallGenerator::for_mh_late_inline(caller, callee, input_not_const);
   } else {

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

PR: https://git.openjdk.java.net/jdk/pull/5903


More information about the hotspot-compiler-dev mailing list