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