RFR: 8342692: C2: MemorySegment API slow with short running loops [v3]

Tobias Hartmann thartmann at openjdk.org
Thu Oct 24 06:52:04 UTC 2024


On Wed, 23 Oct 2024 14:32:51 GMT, Roland Westrelin <roland at openjdk.org> wrote:

>> To optimize a long counted loop and long range checks in a long or int
>> counted loop, the loop is turned into a loop nest. When the loop has
>> few iterations, the overhead of having an outer loop whose backedge is
>> never taken, has a measurable cost. Furthermore, creating the loop
>> nest usually causes one iteration of the loop to be peeled so
>> predicates can be set up. If the loop is short running, then it's an
>> extra iteration that's run with range checks (compared to an int
>> counted loop with int range checks).
>> 
>> This change doesn't create a loop nest when:
>> 
>> 1- it can be determined statically at loop nest creation time that the
>>    loop runs for a short enough number of iterations
>>   
>> 2- profiling reports that the loop runs for no more than ShortLoopIter
>>    iterations (1000 by default).
>>   
>> For 2-, a guard is added which is implemented as yet another predicate.
>> 
>> While this change is in principle simple, I ran into a few
>> implementation issues:
>> 
>> - while c2 has a way to compute the number of iterations of an int
>>   counted loop, it doesn't have that for long counted loop. The
>>   existing logic for int counted loops promotes values to long to
>>   avoid overflows. I reworked it so it now works for both long and int
>>   counted loops.
>> 
>> - I added a new deoptimization reason (Reason_short_running_loop) for
>>   the new predicate. Given the number of iterations is narrowed down
>>   by the predicate, the limit of the loop after transformation is a
>>   cast node that's control dependent on the short running loop
>>   predicate. Because once the counted loop is transformed, it is
>>   likely that range check predicates will be inserted and they will
>>   depend on the limit, the short running loop predicate has to be the
>>   one that's further away from the loop entry. Now it is also possible
>>   that the limit before transformation depends on a predicate
>>   (TestShortRunningLongCountedLoopPredicatesClone is an example), we
>>   can have: new predicates inserted after the transformation that
>>   depend on the casted limit that itself depend on old predicates
>>   added before the transformation. To solve this cicular dependency,
>>   parse and assert predicates are cloned between the old predicates
>>   and the loop head. The cloned short running loop parse predicate is
>>   the one that's used to insert the short running loop predicate.
>> 
>> - In the case of a long counted loop, the loop is transformed into a
>>   regular loop with a ...
>
> Roland Westrelin has updated the pull request incrementally with one additional commit since the last revision:
> 
>   build fix

More failures:


compiler/loopopts/TestOverunrolling.java
-XX:-TieredCompilation -XX:+AlwaysIncrementalInline

# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/workspace/open/src/hotspot/share/opto/loopnode.cpp:6195), pid=2648018, tid=2648035
#  assert(!had_error) failed: bad dominance
#
# JRE version: Java(TM) SE Runtime Environment (24.0) (fastdebug build 24-internal-2024-10-23-1151312.tobias.hartmann.jdk4)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 24-internal-2024-10-23-1151312.tobias.hartmann.jdk4, compiled mode, sharing, compressed oops, compressed class ptrs, parallel gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x12f07a7]  PhaseIdealLoop::compute_lca_of_uses(Node*, Node*, bool)+0x927

Current CompileTask:
C2:19645 2268    b        compiler.loopopts.TestOverunrolling::test3 (89 bytes)

Stack: [0x00007f59a4cee000,0x00007f59a4dee000],  sp=0x00007f59a4de8ca0,  free space=1003k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x12f07a7]  PhaseIdealLoop::compute_lca_of_uses(Node*, Node*, bool)+0x927  (loopnode.cpp:6195)
V  [libjvm.so+0x12f0b78]  PhaseIdealLoop::build_loop_late_post_work(Node*, bool)+0x1d8  (loopnode.cpp:6610)
V  [libjvm.so+0x12f1b20]  PhaseIdealLoop::build_loop_late(VectorSet&, Node_List&, Node_Stack&)+0x190  (loopnode.cpp:6561)
V  [libjvm.so+0x12f2938]  PhaseIdealLoop::build_and_optimize()+0x6d8  (loopnode.cpp:4974)
V  [libjvm.so+0xa356c5]  PhaseIdealLoop::verify(PhaseIterGVN&)+0x3c5  (loopnode.hpp:1144)
V  [libjvm.so+0xa303b3]  Compile::Optimize()+0x743  (compile.cpp:2397)
V  [libjvm.so+0xa34683]  Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x1b23  (compile.cpp:852)
V  [libjvm.so+0x87ee45]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x1d5  (c2compiler.cpp:142)
V  [libjvm.so+0xa40518]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x928  (compileBroker.cpp:2303)
V  [libjvm.so+0xa411a8]  CompileBroker::compiler_thread_loop()+0x478  (compileBroker.cpp:1961)
V  [libjvm.so+0xef10fc]  JavaThread::thread_main_inner()+0xcc  (javaThread.cpp:759)
V  [libjvm.so+0x181dad6]  Thread::call_run()+0xb6  (thread.cpp:234)
V  [libjvm.so+0x14ff5b8]  thread_native_entry(Thread*)+0x128  (os_linux.cpp:858)



compiler/loopopts/superword/TestMemorySegment.java

Failed IR Rules (6) of Methods (6)
----------------------------------
1) Method "static java.lang.Object[] compiler.loopopts.superword.TestMemorySegmentImpl.testIntLoop_longIndex_intInvar_sameAdr_byte(java.lang.foreign.MemorySegment,int)" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={"sse4.1", "true", "asimd", "true"}, counts={"_#V#LOAD_VECTOR_B#_", "> 0", "_#V#ADD_VB#_", "> 0", "_#STORE_VECTOR#_", "> 0"}, applyIfPlatformOr={}, applyIfPlatform={"64-bit", "true"}, failOn={}, applyIfOr={}, applyIfCPUFeatureAnd={}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"
     > Phase "PrintIdeal":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\\d+(\\s){2}(LoadVector.*)+(\\s){2}===.*vector[A-Za-z]<B,32>)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!
         * Constraint 2: "(\\d+(\\s){2}(AddVB.*)+(\\s){2}===.*vector[A-Za-z]<B,32>)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!
         * Constraint 3: "(\\d+(\\s){2}(StoreVector.*)+(\\s){2}===.*)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!

2) Method "static java.lang.Object[] compiler.loopopts.superword.TestMemorySegmentImpl.testIntLoop_longIndex_intInvar_sameAdr_int(java.lang.foreign.MemorySegment,int)" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={"sse4.1", "true", "asimd", "true"}, counts={"_#V#LOAD_VECTOR_I#_", "> 0", "_#V#ADD_VI#_", "> 0", "_#STORE_VECTOR#_", "> 0"}, applyIfPlatformOr={}, applyIfPlatform={"64-bit", "true"}, failOn={}, applyIfOr={}, applyIfCPUFeatureAnd={}, applyIf={"AlignVector", "false"}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"
     > Phase "PrintIdeal":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\\d+(\\s){2}(LoadVector.*)+(\\s){2}===.*vector[A-Za-z]<I,8>)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!
         * Constraint 2: "(\\d+(\\s){2}(AddVI.*)+(\\s){2}===.*vector[A-Za-z]<I,8>)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!
         * Constraint 3: "(\\d+(\\s){2}(StoreVector.*)+(\\s){2}===.*)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!

3) Method "static java.lang.Object[] compiler.loopopts.superword.TestMemorySegmentImpl.testIntLoop_longIndex_longInvar_sameAdr_byte(java.lang.foreign.MemorySegment,long)" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={"sse4.1", "true", "asimd", "true"}, counts={"_#V#LOAD_VECTOR_B#_", "> 0", "_#V#ADD_VB#_", "> 0", "_#STORE_VECTOR#_", "> 0"}, applyIfPlatformOr={}, applyIfPlatform={"64-bit", "true"}, failOn={}, applyIfOr={}, applyIfCPUFeatureAnd={}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"
     > Phase "PrintIdeal":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\\d+(\\s){2}(LoadVector.*)+(\\s){2}===.*vector[A-Za-z]<B,32>)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!
         * Constraint 2: "(\\d+(\\s){2}(AddVB.*)+(\\s){2}===.*vector[A-Za-z]<B,32>)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!
         * Constraint 3: "(\\d+(\\s){2}(StoreVector.*)+(\\s){2}===.*)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!

4) Method "static java.lang.Object[] compiler.loopopts.superword.TestMemorySegmentImpl.testIntLoop_longIndex_longInvar_sameAdr_int(java.lang.foreign.MemorySegment,long)" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={"sse4.1", "true", "asimd", "true"}, counts={"_#V#LOAD_VECTOR_I#_", "> 0", "_#V#ADD_VI#_", "> 0", "_#STORE_VECTOR#_", "> 0"}, applyIfPlatformOr={}, applyIfPlatform={"64-bit", "true"}, failOn={}, applyIfOr={}, applyIfCPUFeatureAnd={}, applyIf={"AlignVector", "false"}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"
     > Phase "PrintIdeal":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\\d+(\\s){2}(LoadVector.*)+(\\s){2}===.*vector[A-Za-z]<I,8>)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!
         * Constraint 2: "(\\d+(\\s){2}(AddVI.*)+(\\s){2}===.*vector[A-Za-z]<I,8>)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!
         * Constraint 3: "(\\d+(\\s){2}(StoreVector.*)+(\\s){2}===.*)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!

5) Method "static java.lang.Object[] compiler.loopopts.superword.TestMemorySegmentImpl.testLongLoop_longIndex_intInvar_sameAdr_byte(java.lang.foreign.MemorySegment,int)" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={"sse4.1", "true", "asimd", "true"}, counts={"_#V#LOAD_VECTOR_B#_", "> 0", "_#V#ADD_VB#_", "> 0", "_#STORE_VECTOR#_", "> 0"}, applyIfPlatformOr={}, applyIfPlatform={"64-bit", "true"}, failOn={}, applyIfOr={}, applyIfCPUFeatureAnd={}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"
     > Phase "PrintIdeal":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\\d+(\\s){2}(LoadVector.*)+(\\s){2}===.*vector[A-Za-z]<B,32>)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!
         * Constraint 2: "(\\d+(\\s){2}(AddVB.*)+(\\s){2}===.*vector[A-Za-z]<B,32>)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!
         * Constraint 3: "(\\d+(\\s){2}(StoreVector.*)+(\\s){2}===.*)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!

6) Method "static java.lang.Object[] compiler.loopopts.superword.TestMemorySegmentImpl.testLongLoop_longIndex_longInvar_sameAdr_byte(java.lang.foreign.MemorySegment,long)" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={"sse4.1", "true", "asimd", "true"}, counts={"_#V#LOAD_VECTOR_B#_", "> 0", "_#V#ADD_VB#_", "> 0", "_#STORE_VECTOR#_", "> 0"}, applyIfPlatformOr={}, applyIfPlatform={"64-bit", "true"}, failOn={}, applyIfOr={}, applyIfCPUFeatureAnd={}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"
     > Phase "PrintIdeal":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\\d+(\\s){2}(LoadVector.*)+(\\s){2}===.*vector[A-Za-z]<B,32>)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!
         * Constraint 2: "(\\d+(\\s){2}(AddVB.*)+(\\s){2}===.*vector[A-Za-z]<B,32>)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!
         * Constraint 3: "(\\d+(\\s){2}(StoreVector.*)+(\\s){2}===.*)"
           - Failed comparison: [found] 0 > 0 [given]
           - No nodes matched!



compiler/predicates/TestAssertionPredicateDoesntConstantFold.java
-XX:+UnlockDiagnosticVMOptions -XX:-TieredCompilation -XX:+StressArrayCopyMacroNode -XX:+StressLCM -XX:+StressGCM -XX:+StressIGVN -XX:+StressCCP -XX:+StressMacroExpansion -XX:+StressMethodHandleLinkerInlining -XX:+StressCompiledExceptionHandlers

# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/workspace/open/src/hotspot/share/opto/loopopts.cpp:1739), pid=2300415, tid=2300431
#  assert(!n->is_Store() && !n->is_LoadStore()) failed: no node with a side effect
#
# JRE version: Java(TM) SE Runtime Environment (24.0) (fastdebug build 24-internal-2024-10-23-1151312.tobias.hartmann.jdk4)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 24-internal-2024-10-23-1151312.tobias.hartmann.jdk4, compiled mode, sharing, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x1300f90]  PhaseIdealLoop::try_sink_out_of_loop(Node*) [clone .part.0]+0xbd0

Current CompileTask:
C2:157   14    b        TestAssertionPredicateDoesntConstantFold::test (69 bytes)

Stack: [0x00007f502acee000,0x00007f502adee000],  sp=0x00007f502ade8cf0,  free space=1003k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x1300f90]  PhaseIdealLoop::try_sink_out_of_loop(Node*) [clone .part.0]+0xbd0  (loopopts.cpp:1739)
V  [libjvm.so+0x1301148]  PhaseIdealLoop::split_if_with_blocks_post(Node*)+0x98  (loopopts.cpp:1706)
V  [libjvm.so+0x13019fa]  PhaseIdealLoop::split_if_with_blocks(VectorSet&, Node_Stack&)+0x9a  (loopopts.cpp:1986)
V  [libjvm.so+0x12f338b]  PhaseIdealLoop::build_and_optimize()+0x112b  (loopnode.cpp:5086)
V  [libjvm.so+0xa36958]  PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)+0x3a8  (loopnode.hpp:1129)
V  [libjvm.so+0xa2f9a4]  Compile::optimize_loops(PhaseIterGVN&, LoopOptsMode)+0x74  (compile.cpp:2179)
V  [libjvm.so+0xa3072c]  Compile::Optimize()+0xabc  (compile.cpp:2426)
V  [libjvm.so+0xa34683]  Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x1b23  (compile.cpp:852)
V  [libjvm.so+0x87ee45]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x1d5  (c2compiler.cpp:142)
V  [libjvm.so+0xa40518]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x928  (compileBroker.cpp:2303)
V  [libjvm.so+0xa411a8]  CompileBroker::compiler_thread_loop()+0x478  (compileBroker.cpp:1961)
V  [libjvm.so+0xef10fc]  JavaThread::thread_main_inner()+0xcc  (javaThread.cpp:759)
V  [libjvm.so+0x181dad6]  Thread::call_run()+0xb6  (thread.cpp:234)
V  [libjvm.so+0x14ff5b8]  thread_native_entry(Thread*)+0x128  (os_linux.cpp:858)



serviceability/sa/ClhsdbCDSCore.java
-Duse.JTREG_TEST_THREAD_FACTORY=Virtual -XX:+UseZGC -XX:-ZGenerational -XX:-VerifyContinuations

# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007effa39fa616, pid=1722549, tid=1722585
#
# JRE version: Java(TM) SE Runtime Environment (24.0) (fastdebug build 24-internal-2024-10-23-1151312.tobias.hartmann.jdk4)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 24-internal-2024-10-23-1151312.tobias.hartmann.jdk4, mixed mode, sharing, tiered, compressed class ptrs, z gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x1874616]  Unsafe_PutInt+0x106

Stack: [0x00007efd6e325000,0x00007efd6e425000],  sp=0x00007efd6e422c60,  free space=1015k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x1874616]  Unsafe_PutInt+0x106  (unsafe.cpp:251)
j  jdk.internal.misc.Unsafe.putInt(Ljava/lang/Object;JI)V+0 java.base at 24-internal
j  jdk.internal.misc.Unsafe.putInt(JI)V+4 java.base at 24-internal
j  CrashApp.main([Ljava/lang/String;)V+5
j  java.lang.invoke.LambdaForm$DMH+0x00007efd024123e0.invokeStatic(Ljava/lang/Object;Ljava/lang/Object;)V+10 java.base at 24-internal
j  java.lang.invoke.LambdaForm$MH+0x00007efd02414c10.invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+33 java.base at 24-internal
j  java.lang.invoke.Invokers$Holder.invokeExact_MT(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+20 java.base at 24-internal
j  jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+55 java.base at 24-internal
j  jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+23 java.base at 24-internal
j  java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+102 java.base at 24-internal
j  jdk.test.lib.process.ProcessTools.lambda$main$0(Ljava/lang/reflect/Method;[Ljava/lang/String;Ljdk/test/lib/process/ProcessTools$MainThreadGroup;)V+10
j  jdk.test.lib.process.ProcessTools$$Lambda+0x00007efd070016e0.run()V+12
j  java.lang.Thread.runWith(Ljava/lang/Object;Ljava/lang/Runnable;)V+5 java.base at 24-internal
j  java.lang.VirtualThread.run(Ljava/lang/Runnable;)V+66 java.base at 24-internal
j  java.lang.VirtualThread$VThreadContinuation$1.run()V+8 java.base at 24-internal
j  jdk.internal.vm.Continuation.enter0()V+4 java.base at 24-internal
j  jdk.internal.vm.Continuation.enter(Ljdk/internal/vm/Continuation;Z)V+1 java.base at 24-internal
J 96  jdk.internal.vm.Continuation.enterSpecial(Ljdk/internal/vm/Continuation;ZZ)V java.base at 24-internal (0 bytes) @ 0x00007eff8c2d9ea4 [0x00007eff8c2d9d40+0x0000000000000164]
j  jdk.internal.vm.Continuation.run()V+122 java.base at 24-internal
j  java.lang.VirtualThread.runContinuation()V+72 java.base at 24-internal
j  java.lang.VirtualThread$$Lambda+0x00007efd07047610.run()V+4 java.base at 24-internal
j  java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute()Ljava/lang/Void;+4 java.base at 24-internal
[...]



compiler/c2/irTests/TestLongRangeChecks.java
-XX:UseAVX=0 -XX:UseSSE=2

Various IR verification failures



compiler/escapeAnalysis/TestMissingAntiDependency.java
-XX:StressLongCountedLoop=200000000

# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/workspace/open/src/hotspot/share/opto/gcm.cpp:904), pid=2322548, tid=2322560
#  assert(use_mem_state != load->find_exact_control(load->in(0))) failed: dependence cycle found
#
# JRE version: Java(TM) SE Runtime Environment (24.0) (fastdebug build 24-internal-2024-10-23-1149160.tobias.hartmann.jdk4)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 24-internal-2024-10-23-1149160.tobias.hartmann.jdk4, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, parallel gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0xdb3ffe]  PhaseCFG::insert_anti_dependences(Block*, Node*, bool)+0x232e
#

Current CompileTask:
C2:285   92    b  4       TestMissingAntiDependency::test (89 bytes)

Stack: [0x00007f34579fb000,0x00007f3457afb000],  sp=0x00007f3457af6690,  free space=1005k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xdb3ffe]  PhaseCFG::insert_anti_dependences(Block*, Node*, bool)+0x232e  (gcm.cpp:904)
V  [libjvm.so+0xdba0b6]  PhaseCFG::schedule_late(VectorSet&, Node_Stack&)+0xa16  (gcm.cpp:1521)
V  [libjvm.so+0xdbaa0f]  PhaseCFG::global_code_motion()+0x3ef  (gcm.cpp:1632)
V  [libjvm.so+0xdbd826]  PhaseCFG::do_global_code_motion()+0x66  (gcm.cpp:1755)
V  [libjvm.so+0xa318d3]  Compile::Code_Gen()+0x3c3  (compile.cpp:2960)
V  [libjvm.so+0xa347a0]  Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x1c40  (compile.cpp:885)
V  [libjvm.so+0x87ee45]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x1d5  (c2compiler.cpp:142)
V  [libjvm.so+0xa40518]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x928  (compileBroker.cpp:2303)
V  [libjvm.so+0xa411a8]  CompileBroker::compiler_thread_loop()+0x478  (compileBroker.cpp:1961)
V  [libjvm.so+0xef10fc]  JavaThread::thread_main_inner()+0xcc  (javaThread.cpp:759)
V  [libjvm.so+0x181dad6]  Thread::call_run()+0xb6  (thread.cpp:234)
V  [libjvm.so+0x14ff5b8]  thread_native_entry(Thread*)+0x128  (os_linux.cpp:858)

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

PR Comment: https://git.openjdk.org/jdk/pull/21630#issuecomment-2434438932


More information about the hotspot-compiler-dev mailing list