I would appreciate a mention in the PR, I spent many hours extracting and reducing the reproducer from a nasty CTW test, it was a class file, and I extracted it into a JASM, removed strack-frames, reduced it more, and finally extracted this small JAVA file. This makes your work easier, and also makes triaging easier (the class file would have only reproduced on JDK22, but the java file reproduces way back).
Reproduces back to JDK17. JDK11 is missing the StressIGVN flag and some others. But it could be that it is still affected - you will have to determine that once you do the fix and backports.
Reproduce with JDK24:
/oracle-work/jdk-fork2/build/linux-x64-debug/jdk/bin/java -XX:-TieredCompilation -XX:+VerifyGraphEdges -XX:+StressIGVN -XX:RepeatCompilation=100 -Xcomp -XX:CompileCommand=compileonly,X::test -XX:CompileCommand=printcompilation,X::* X.java
CompileCommand: compileonly X.test bool compileonly = true
CompileCommand: PrintCompilation X.* bool PrintCompilation = true
4691 98 b X::test (28 bytes)
*** Dead nodes reachable via DU edges:
281 CastPP === 51 11 [[ 331 210 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact * extra types: {0:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact *} strong dependency !orig=[202] !jvms: X::test @ bci:7 (line 9)
332 IfTrue === 330 [[ 331 333 ]] #1 !orig=[215] !jvms: X::test @ bci:23 (line 13)
10 Parm === 3 [[ 37 24 ]] Parm0: byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact * !jvms: X::test @ bci:-1 (line 8)
29 IfTrue === 28 [[ 50 37 ]] #1 !jvms: X::test @ bci:4 (line 9)
183 AddP === _ 1 181 182 [[ 184 263 322 ]] !jvms: X::test @ bci:16 (line 10)
324 StoreB === 336 7 177 325 [[ 323 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !orig=258 !jvms: X::test @ bci:24 (line 13)
7 Parm === 3 [[ 325 324 142 285 234 32 217 40 263 94 180 252 184 322 323 260 320 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !orig=[122] !jvms: X::test @ bci:-1 (line 8)
0 Root === 0 36 256 238 221 98 317 [[ 0 1 3 22 23 31 38 182 43 181 60 158 152 ]]
335 RangeCheck === 334 272 [[ 336 343 ]] P=0.000001, C=-1.000000 !orig=[278],[247] !jvms: X::test @ bci:24 (line 13)
22 ConI === 0 [[ 252 328 234 47 234 179 145 259 252 165 217 94 94 234 319 ]] #int:0
331 CastPP === 332 281 [[ 321 321 326 326 328 252 234 259 234 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * !orig=[222] !jvms: X::test @ bci:23 (line 13)
37 CastPP === 29 10 [[ 252 39 39 252 177 177 259 94 234 328 234 179 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * !jvms: X::test @ bci:4 (line 9)
322 LoadP === 336 7 183 [[ 328 ]] @rawptr:BotPTR, idx=Raw; #rawptr:BotPTR (does not depend only on test, raw access) !orig=263 !jvms: X::test @ bci:25 (line 13)
323 MergeMem === _ 1 7 1 1 324 [[ 328 ]] { - - N324:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any * } Memory: @BotPTR *+bot, idx=Bot; !orig=260 !jvms: X::test @ bci:25 (line 13)
1 Con === 0 [[ ]] #top
336 IfFalse === 335 [[ 322 324 328 ]] #0 !orig=[279],[248] !jvms: X::test @ bci:24 (line 13)
328 SafePoint === 336 1 323 1 1 322 37 331 22 [[ 287 ]] SafePoint !orig=259 !jvms: X::test @ bci:25 (line 13)
---
281 CastPP === 51 11 [[ 331 210 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact * extra types: {0:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact *} strong dependency !orig=[202] !jvms: X::test @ bci:7 (line 9)
332 IfTrue === 330 [[ 331 333 ]] #1 !orig=[215] !jvms: X::test @ bci:23 (line 13)
10 Parm === 3 [[ 37 24 ]] Parm0: byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact * !jvms: X::test @ bci:-1 (line 8)
29 IfTrue === 28 [[ 50 37 ]] #1 !jvms: X::test @ bci:4 (line 9)
183 AddP === _ 1 181 182 [[ 184 263 322 ]] !jvms: X::test @ bci:16 (line 10)
258 StoreB === 287 207 177 240 [[ 260 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !jvms: X::test @ bci:24 (line 13)
7 Parm === 3 [[ 325 324 142 285 234 32 217 40 263 94 180 252 184 322 323 260 320 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !orig=[122] !jvms: X::test @ bci:-1 (line 8)
0 Root === 0 36 256 238 221 98 317 [[ 0 1 3 22 23 31 38 182 43 181 60 158 152 ]]
328 SafePoint === 336 1 323 1 1 322 37 331 22 [[ 287 ]] SafePoint !orig=259 !jvms: X::test @ bci:25 (line 13)
22 ConI === 0 [[ 252 328 234 47 234 179 145 259 252 165 217 94 94 234 319 ]] #int:0
331 CastPP === 332 281 [[ 321 321 326 326 328 252 234 259 234 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * !orig=[222] !jvms: X::test @ bci:23 (line 13)
37 CastPP === 29 10 [[ 252 39 39 252 177 177 259 94 234 328 234 179 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * !jvms: X::test @ bci:4 (line 9)
263 LoadP === 287 7 183 [[ 259 ]] @rawptr:BotPTR, idx=Raw; #rawptr:BotPTR (does not depend only on test, raw access) !jvms: X::test @ bci:25 (line 13)
260 MergeMem === _ 1 7 1 1 258 [[ 259 ]] { - - N258:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any * } Memory: @BotPTR *+bot, idx=Bot; !jvms: X::test @ bci:25 (line 13)
1 Con === 0 [[ ]] #top
287 Loop === 287 328 259 [[ 287 207 259 263 258 ]] inner !orig=[204] !jvms: X::test @ bci:10 (line 10)
259 SafePoint === 287 1 260 1 1 263 37 331 22 [[ 287 ]] SafePoint !jvms: X::test @ bci:25 (line 13)
---
326 AddP === _ 331 331 158 [[ 325 240 ]] !orig=[239] !jvms: X::test @ bci:23 (line 13)
334 IfFalse === 333 [[ 325 335 240 ]] #0 !orig=[270],[230] !jvms: X::test @ bci:23 (line 13)
158 ConL === 0 [[ 159 177 326 ]] #long:16
37 CastPP === 29 10 [[ 252 39 39 252 177 177 259 94 234 328 234 179 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * !jvms: X::test @ bci:4 (line 9)
3 Start === 3 0 [[ 3 5 6 7 8 9 10 11 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *, 6:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *}
335 RangeCheck === 334 272 [[ 336 343 ]] P=0.000001, C=-1.000000 !orig=[278],[247] !jvms: X::test @ bci:24 (line 13)
325 LoadB === 334 7 326 [[ 324 252 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; #byte !orig=240 !jvms: X::test @ bci:23 (line 13)
177 AddP === _ 37 37 158 [[ 178 258 324 ]] !jvms: X::test @ bci:15 (line 10)
7 Parm === 3 [[ 325 324 142 285 234 32 217 40 263 94 180 252 184 322 323 260 320 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !orig=[122] !jvms: X::test @ bci:-1 (line 8)
336 IfFalse === 335 [[ 322 324 328 ]] #0 !orig=[279],[248] !jvms: X::test @ bci:24 (line 13)
324 StoreB === 336 7 177 325 [[ 323 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !orig=258 !jvms: X::test @ bci:24 (line 13)
---
182 ConL === 0 [[ 183 ]] #long:1168
181 ThreadLocal === 0 [[ 183 ]] !jvms: X::test @ bci:16 (line 10)
1 Con === 0 [[ ]] #top
3 Start === 3 0 [[ 3 5 6 7 8 9 10 11 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *, 6:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *}
259 SafePoint === 287 1 260 1 1 263 37 331 22 [[ 287 ]] SafePoint !jvms: X::test @ bci:25 (line 13)
328 SafePoint === 336 1 323 1 1 322 37 331 22 [[ 287 ]] SafePoint !orig=259 !jvms: X::test @ bci:25 (line 13)
183 AddP === _ 1 181 182 [[ 184 263 322 ]] !jvms: X::test @ bci:16 (line 10)
7 Parm === 3 [[ 325 324 142 285 234 32 217 40 263 94 180 252 184 322 323 260 320 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !orig=[122] !jvms: X::test @ bci:-1 (line 8)
287 Loop === 287 328 259 [[ 287 207 259 263 258 ]] inner !orig=[204] !jvms: X::test @ bci:10 (line 10)
263 LoadP === 287 7 183 [[ 259 ]] @rawptr:BotPTR, idx=Raw; #rawptr:BotPTR (does not depend only on test, raw access) !jvms: X::test @ bci:25 (line 13)
---
182 ConL === 0 [[ 183 ]] #long:1168
181 ThreadLocal === 0 [[ 183 ]] !jvms: X::test @ bci:16 (line 10)
1 Con === 0 [[ ]] #top
3 Start === 3 0 [[ 3 5 6 7 8 9 10 11 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *, 6:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *}
335 RangeCheck === 334 272 [[ 336 343 ]] P=0.000001, C=-1.000000 !orig=[278],[247] !jvms: X::test @ bci:24 (line 13)
183 AddP === _ 1 181 182 [[ 184 263 322 ]] !jvms: X::test @ bci:16 (line 10)
7 Parm === 3 [[ 325 324 142 285 234 32 217 40 263 94 180 252 184 322 323 260 320 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !orig=[122] !jvms: X::test @ bci:-1 (line 8)
336 IfFalse === 335 [[ 322 324 328 ]] #0 !orig=[279],[248] !jvms: X::test @ bci:24 (line 13)
322 LoadP === 336 7 183 [[ 328 ]] @rawptr:BotPTR, idx=Raw; #rawptr:BotPTR (does not depend only on test, raw access) !orig=263 !jvms: X::test @ bci:25 (line 13)
---
325 LoadB === 334 7 326 [[ 324 252 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; #byte !orig=240 !jvms: X::test @ bci:23 (line 13)
177 AddP === _ 37 37 158 [[ 178 258 324 ]] !jvms: X::test @ bci:15 (line 10)
336 IfFalse === 335 [[ 322 324 328 ]] #0 !orig=[279],[248] !jvms: X::test @ bci:24 (line 13)
3 Start === 3 0 [[ 3 5 6 7 8 9 10 11 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *, 6:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *}
0 Root === 0 36 256 238 221 98 317 [[ 0 1 3 22 23 31 38 182 43 181 60 158 152 ]]
324 StoreB === 336 7 177 325 [[ 323 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !orig=258 !jvms: X::test @ bci:24 (line 13)
7 Parm === 3 [[ 325 324 142 285 234 32 217 40 263 94 180 252 184 322 323 260 320 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !orig=[122] !jvms: X::test @ bci:-1 (line 8)
1 Con === 0 [[ ]] #top
323 MergeMem === _ 1 7 1 1 324 [[ 328 ]] { - - N324:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any * } Memory: @BotPTR *+bot, idx=Bot; !orig=260 !jvms: X::test @ bci:25 (line 13)
---
240 LoadB === 334 207 326 [[ 258 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; #byte !jvms: X::test @ bci:23 (line 13)
177 AddP === _ 37 37 158 [[ 178 258 324 ]] !jvms: X::test @ bci:15 (line 10)
207 Phi === 287 324 258 [[ 240 258 ]] #memory Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; !jvms: X::test @ bci:10 (line 10)
287 Loop === 287 328 259 [[ 287 207 259 263 258 ]] inner !orig=[204] !jvms: X::test @ bci:10 (line 10)
3 Start === 3 0 [[ 3 5 6 7 8 9 10 11 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *, 6:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *}
0 Root === 0 36 256 238 221 98 317 [[ 0 1 3 22 23 31 38 182 43 181 60 158 152 ]]
258 StoreB === 287 207 177 240 [[ 260 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !jvms: X::test @ bci:24 (line 13)
7 Parm === 3 [[ 325 324 142 285 234 32 217 40 263 94 180 252 184 322 323 260 320 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !orig=[122] !jvms: X::test @ bci:-1 (line 8)
1 Con === 0 [[ ]] #top
260 MergeMem === _ 1 7 1 1 258 [[ 259 ]] { - - N258:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any * } Memory: @BotPTR *+bot, idx=Bot; !jvms: X::test @ bci:25 (line 13)
---
272 Bool === _ 165 [[ 335 306 ]] [le] !orig=[277]
334 IfFalse === 333 [[ 325 335 240 ]] #0 !orig=[270],[230] !jvms: X::test @ bci:23 (line 13)
335 RangeCheck === 334 272 [[ 336 343 ]] P=0.000001, C=-1.000000 !orig=[278],[247] !jvms: X::test @ bci:24 (line 13)
336 IfFalse === 335 [[ 322 324 328 ]] #0 !orig=[279],[248] !jvms: X::test @ bci:24 (line 13)
---
158 ConL === 0 [[ 159 177 326 ]] #long:16
331 CastPP === 332 281 [[ 321 321 326 326 328 252 234 259 234 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * !orig=[222] !jvms: X::test @ bci:23 (line 13)
258 StoreB === 287 207 177 240 [[ 260 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !jvms: X::test @ bci:24 (line 13)
324 StoreB === 336 7 177 325 [[ 323 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !orig=258 !jvms: X::test @ bci:24 (line 13)
287 Loop === 287 328 259 [[ 287 207 259 263 258 ]] inner !orig=[204] !jvms: X::test @ bci:10 (line 10)
333 RangeCheck === 332 318 [[ 334 340 ]] P=0.000001, C=-1.000000 !orig=[269],[229] !jvms: X::test @ bci:23 (line 13)
326 AddP === _ 331 331 158 [[ 325 240 ]] !orig=[239] !jvms: X::test @ bci:23 (line 13)
207 Phi === 287 324 258 [[ 240 258 ]] #memory Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; !jvms: X::test @ bci:10 (line 10)
334 IfFalse === 333 [[ 325 335 240 ]] #0 !orig=[270],[230] !jvms: X::test @ bci:23 (line 13)
240 LoadB === 334 207 326 [[ 258 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; #byte !jvms: X::test @ bci:23 (line 13)
---
326 AddP === _ 331 331 158 [[ 325 240 ]] !orig=[239] !jvms: X::test @ bci:23 (line 13)
334 IfFalse === 333 [[ 325 335 240 ]] #0 !orig=[270],[230] !jvms: X::test @ bci:23 (line 13)
158 ConL === 0 [[ 159 177 326 ]] #long:16
37 CastPP === 29 10 [[ 252 39 39 252 177 177 259 94 234 328 234 179 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * !jvms: X::test @ bci:4 (line 9)
324 StoreB === 336 7 177 325 [[ 323 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !orig=258 !jvms: X::test @ bci:24 (line 13)
259 SafePoint === 287 1 260 1 1 263 37 331 22 [[ 287 ]] SafePoint !jvms: X::test @ bci:25 (line 13)
328 SafePoint === 336 1 323 1 1 322 37 331 22 [[ 287 ]] SafePoint !orig=259 !jvms: X::test @ bci:25 (line 13)
240 LoadB === 334 207 326 [[ 258 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; #byte !jvms: X::test @ bci:23 (line 13)
177 AddP === _ 37 37 158 [[ 178 258 324 ]] !jvms: X::test @ bci:15 (line 10)
207 Phi === 287 324 258 [[ 240 258 ]] #memory Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; !jvms: X::test @ bci:10 (line 10)
287 Loop === 287 328 259 [[ 287 207 259 263 258 ]] inner !orig=[204] !jvms: X::test @ bci:10 (line 10)
258 StoreB === 287 207 177 240 [[ 260 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !jvms: X::test @ bci:24 (line 13)
---
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/oracle-work/jdk-fork2/open/src/hotspot/share/opto/compile.cpp:4356), pid=4112696, tid=4112710
# assert(!dead_nodes) failed: using nodes must be reachable from root
#
# JRE version: Java(TM) SE Runtime Environment (24.0) (fastdebug build 24-internal-2024-07-04-1039391.emanuel...)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 24-internal-2024-07-04-1039391.emanuel..., compiled mode, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x9d4c75] Compile::verify_graph_edges(bool) [clone .part.0]+0x615
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E" (or dumping to /oracle-work/xyz/core.4112696)
#
# An error report file with more information is saved as:
# /oracle-work/xyz/hs_err_pid4112696.log
#
# Compiler replay data is saved as:
# /oracle-work/xyz/replay_pid4112696.log
#
# If you would like to submit a bug report, please visit:
# https://bugreport.java.com/bugreport/crash.jsp
#
Current CompileTask:
C2:4722 98 b X::test (28 bytes)
Stack: [0x00007f239dbfc000,0x00007f239dcfd000], sp=0x00007f239dcf8020, free space=1008k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x9d4c75] Compile::verify_graph_edges(bool) [clone .part.0]+0x615 (compile.cpp:4356)
V [libjvm.so+0x1526dcb] PhaseCCP::transform(Node*)+0x6db (phaseX.cpp:2092)
V [libjvm.so+0x152142b] PhaseCCP::do_transform()+0x1b (phaseX.cpp:2022)
V [libjvm.so+0x9df573] Compile::Optimize()+0x7b3 (compile.cpp:2399)
V [libjvm.so+0x9e3326] Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x1b06 (compile.cpp:852)
V [libjvm.so+0x835575] C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x1d5 (c2compiler.cpp:142)
V [libjvm.so+0x9eef68] CompileBroker::invoke_compiler_on_method(CompileTask*)+0x928 (compileBroker.cpp:2303)
V [libjvm.so+0x9efbf8] CompileBroker::compiler_thread_loop()+0x478 (compileBroker.cpp:1961)
V [libjvm.so+0xe994dc] JavaThread::thread_main_inner()+0xcc (javaThread.cpp:757)
V [libjvm.so+0x17b9076] Thread::call_run()+0xb6 (thread.cpp:225)
Reproduces back to JDK17. JDK11 is missing the StressIGVN flag and some others. But it could be that it is still affected - you will have to determine that once you do the fix and backports.
Reproduce with JDK24:
/oracle-work/jdk-fork2/build/linux-x64-debug/jdk/bin/java -XX:-TieredCompilation -XX:+VerifyGraphEdges -XX:+StressIGVN -XX:RepeatCompilation=100 -Xcomp -XX:CompileCommand=compileonly,X::test -XX:CompileCommand=printcompilation,X::* X.java
CompileCommand: compileonly X.test bool compileonly = true
CompileCommand: PrintCompilation X.* bool PrintCompilation = true
4691 98 b X::test (28 bytes)
*** Dead nodes reachable via DU edges:
281 CastPP === 51 11 [[ 331 210 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact * extra types: {0:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact *} strong dependency !orig=[202] !jvms: X::test @ bci:7 (line 9)
332 IfTrue === 330 [[ 331 333 ]] #1 !orig=[215] !jvms: X::test @ bci:23 (line 13)
10 Parm === 3 [[ 37 24 ]] Parm0: byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact * !jvms: X::test @ bci:-1 (line 8)
29 IfTrue === 28 [[ 50 37 ]] #1 !jvms: X::test @ bci:4 (line 9)
183 AddP === _ 1 181 182 [[ 184 263 322 ]] !jvms: X::test @ bci:16 (line 10)
324 StoreB === 336 7 177 325 [[ 323 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !orig=258 !jvms: X::test @ bci:24 (line 13)
7 Parm === 3 [[ 325 324 142 285 234 32 217 40 263 94 180 252 184 322 323 260 320 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !orig=[122] !jvms: X::test @ bci:-1 (line 8)
0 Root === 0 36 256 238 221 98 317 [[ 0 1 3 22 23 31 38 182 43 181 60 158 152 ]]
335 RangeCheck === 334 272 [[ 336 343 ]] P=0.000001, C=-1.000000 !orig=[278],[247] !jvms: X::test @ bci:24 (line 13)
22 ConI === 0 [[ 252 328 234 47 234 179 145 259 252 165 217 94 94 234 319 ]] #int:0
331 CastPP === 332 281 [[ 321 321 326 326 328 252 234 259 234 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * !orig=[222] !jvms: X::test @ bci:23 (line 13)
37 CastPP === 29 10 [[ 252 39 39 252 177 177 259 94 234 328 234 179 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * !jvms: X::test @ bci:4 (line 9)
322 LoadP === 336 7 183 [[ 328 ]] @rawptr:BotPTR, idx=Raw; #rawptr:BotPTR (does not depend only on test, raw access) !orig=263 !jvms: X::test @ bci:25 (line 13)
323 MergeMem === _ 1 7 1 1 324 [[ 328 ]] { - - N324:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any * } Memory: @BotPTR *+bot, idx=Bot; !orig=260 !jvms: X::test @ bci:25 (line 13)
1 Con === 0 [[ ]] #top
336 IfFalse === 335 [[ 322 324 328 ]] #0 !orig=[279],[248] !jvms: X::test @ bci:24 (line 13)
328 SafePoint === 336 1 323 1 1 322 37 331 22 [[ 287 ]] SafePoint !orig=259 !jvms: X::test @ bci:25 (line 13)
---
281 CastPP === 51 11 [[ 331 210 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact * extra types: {0:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact *} strong dependency !orig=[202] !jvms: X::test @ bci:7 (line 9)
332 IfTrue === 330 [[ 331 333 ]] #1 !orig=[215] !jvms: X::test @ bci:23 (line 13)
10 Parm === 3 [[ 37 24 ]] Parm0: byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact * !jvms: X::test @ bci:-1 (line 8)
29 IfTrue === 28 [[ 50 37 ]] #1 !jvms: X::test @ bci:4 (line 9)
183 AddP === _ 1 181 182 [[ 184 263 322 ]] !jvms: X::test @ bci:16 (line 10)
258 StoreB === 287 207 177 240 [[ 260 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !jvms: X::test @ bci:24 (line 13)
7 Parm === 3 [[ 325 324 142 285 234 32 217 40 263 94 180 252 184 322 323 260 320 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !orig=[122] !jvms: X::test @ bci:-1 (line 8)
0 Root === 0 36 256 238 221 98 317 [[ 0 1 3 22 23 31 38 182 43 181 60 158 152 ]]
328 SafePoint === 336 1 323 1 1 322 37 331 22 [[ 287 ]] SafePoint !orig=259 !jvms: X::test @ bci:25 (line 13)
22 ConI === 0 [[ 252 328 234 47 234 179 145 259 252 165 217 94 94 234 319 ]] #int:0
331 CastPP === 332 281 [[ 321 321 326 326 328 252 234 259 234 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * !orig=[222] !jvms: X::test @ bci:23 (line 13)
37 CastPP === 29 10 [[ 252 39 39 252 177 177 259 94 234 328 234 179 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * !jvms: X::test @ bci:4 (line 9)
263 LoadP === 287 7 183 [[ 259 ]] @rawptr:BotPTR, idx=Raw; #rawptr:BotPTR (does not depend only on test, raw access) !jvms: X::test @ bci:25 (line 13)
260 MergeMem === _ 1 7 1 1 258 [[ 259 ]] { - - N258:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any * } Memory: @BotPTR *+bot, idx=Bot; !jvms: X::test @ bci:25 (line 13)
1 Con === 0 [[ ]] #top
287 Loop === 287 328 259 [[ 287 207 259 263 258 ]] inner !orig=[204] !jvms: X::test @ bci:10 (line 10)
259 SafePoint === 287 1 260 1 1 263 37 331 22 [[ 287 ]] SafePoint !jvms: X::test @ bci:25 (line 13)
---
326 AddP === _ 331 331 158 [[ 325 240 ]] !orig=[239] !jvms: X::test @ bci:23 (line 13)
334 IfFalse === 333 [[ 325 335 240 ]] #0 !orig=[270],[230] !jvms: X::test @ bci:23 (line 13)
158 ConL === 0 [[ 159 177 326 ]] #long:16
37 CastPP === 29 10 [[ 252 39 39 252 177 177 259 94 234 328 234 179 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * !jvms: X::test @ bci:4 (line 9)
3 Start === 3 0 [[ 3 5 6 7 8 9 10 11 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *, 6:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *}
335 RangeCheck === 334 272 [[ 336 343 ]] P=0.000001, C=-1.000000 !orig=[278],[247] !jvms: X::test @ bci:24 (line 13)
325 LoadB === 334 7 326 [[ 324 252 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; #byte !orig=240 !jvms: X::test @ bci:23 (line 13)
177 AddP === _ 37 37 158 [[ 178 258 324 ]] !jvms: X::test @ bci:15 (line 10)
7 Parm === 3 [[ 325 324 142 285 234 32 217 40 263 94 180 252 184 322 323 260 320 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !orig=[122] !jvms: X::test @ bci:-1 (line 8)
336 IfFalse === 335 [[ 322 324 328 ]] #0 !orig=[279],[248] !jvms: X::test @ bci:24 (line 13)
324 StoreB === 336 7 177 325 [[ 323 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !orig=258 !jvms: X::test @ bci:24 (line 13)
---
182 ConL === 0 [[ 183 ]] #long:1168
181 ThreadLocal === 0 [[ 183 ]] !jvms: X::test @ bci:16 (line 10)
1 Con === 0 [[ ]] #top
3 Start === 3 0 [[ 3 5 6 7 8 9 10 11 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *, 6:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *}
259 SafePoint === 287 1 260 1 1 263 37 331 22 [[ 287 ]] SafePoint !jvms: X::test @ bci:25 (line 13)
328 SafePoint === 336 1 323 1 1 322 37 331 22 [[ 287 ]] SafePoint !orig=259 !jvms: X::test @ bci:25 (line 13)
183 AddP === _ 1 181 182 [[ 184 263 322 ]] !jvms: X::test @ bci:16 (line 10)
7 Parm === 3 [[ 325 324 142 285 234 32 217 40 263 94 180 252 184 322 323 260 320 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !orig=[122] !jvms: X::test @ bci:-1 (line 8)
287 Loop === 287 328 259 [[ 287 207 259 263 258 ]] inner !orig=[204] !jvms: X::test @ bci:10 (line 10)
263 LoadP === 287 7 183 [[ 259 ]] @rawptr:BotPTR, idx=Raw; #rawptr:BotPTR (does not depend only on test, raw access) !jvms: X::test @ bci:25 (line 13)
---
182 ConL === 0 [[ 183 ]] #long:1168
181 ThreadLocal === 0 [[ 183 ]] !jvms: X::test @ bci:16 (line 10)
1 Con === 0 [[ ]] #top
3 Start === 3 0 [[ 3 5 6 7 8 9 10 11 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *, 6:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *}
335 RangeCheck === 334 272 [[ 336 343 ]] P=0.000001, C=-1.000000 !orig=[278],[247] !jvms: X::test @ bci:24 (line 13)
183 AddP === _ 1 181 182 [[ 184 263 322 ]] !jvms: X::test @ bci:16 (line 10)
7 Parm === 3 [[ 325 324 142 285 234 32 217 40 263 94 180 252 184 322 323 260 320 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !orig=[122] !jvms: X::test @ bci:-1 (line 8)
336 IfFalse === 335 [[ 322 324 328 ]] #0 !orig=[279],[248] !jvms: X::test @ bci:24 (line 13)
322 LoadP === 336 7 183 [[ 328 ]] @rawptr:BotPTR, idx=Raw; #rawptr:BotPTR (does not depend only on test, raw access) !orig=263 !jvms: X::test @ bci:25 (line 13)
---
325 LoadB === 334 7 326 [[ 324 252 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; #byte !orig=240 !jvms: X::test @ bci:23 (line 13)
177 AddP === _ 37 37 158 [[ 178 258 324 ]] !jvms: X::test @ bci:15 (line 10)
336 IfFalse === 335 [[ 322 324 328 ]] #0 !orig=[279],[248] !jvms: X::test @ bci:24 (line 13)
3 Start === 3 0 [[ 3 5 6 7 8 9 10 11 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *, 6:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *}
0 Root === 0 36 256 238 221 98 317 [[ 0 1 3 22 23 31 38 182 43 181 60 158 152 ]]
324 StoreB === 336 7 177 325 [[ 323 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !orig=258 !jvms: X::test @ bci:24 (line 13)
7 Parm === 3 [[ 325 324 142 285 234 32 217 40 263 94 180 252 184 322 323 260 320 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !orig=[122] !jvms: X::test @ bci:-1 (line 8)
1 Con === 0 [[ ]] #top
323 MergeMem === _ 1 7 1 1 324 [[ 328 ]] { - - N324:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any * } Memory: @BotPTR *+bot, idx=Bot; !orig=260 !jvms: X::test @ bci:25 (line 13)
---
240 LoadB === 334 207 326 [[ 258 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; #byte !jvms: X::test @ bci:23 (line 13)
177 AddP === _ 37 37 158 [[ 178 258 324 ]] !jvms: X::test @ bci:15 (line 10)
207 Phi === 287 324 258 [[ 240 258 ]] #memory Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; !jvms: X::test @ bci:10 (line 10)
287 Loop === 287 328 259 [[ 287 207 259 263 258 ]] inner !orig=[204] !jvms: X::test @ bci:10 (line 10)
3 Start === 3 0 [[ 3 5 6 7 8 9 10 11 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *, 6:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *}
0 Root === 0 36 256 238 221 98 317 [[ 0 1 3 22 23 31 38 182 43 181 60 158 152 ]]
258 StoreB === 287 207 177 240 [[ 260 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !jvms: X::test @ bci:24 (line 13)
7 Parm === 3 [[ 325 324 142 285 234 32 217 40 263 94 180 252 184 322 323 260 320 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !orig=[122] !jvms: X::test @ bci:-1 (line 8)
1 Con === 0 [[ ]] #top
260 MergeMem === _ 1 7 1 1 258 [[ 259 ]] { - - N258:byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any * } Memory: @BotPTR *+bot, idx=Bot; !jvms: X::test @ bci:25 (line 13)
---
272 Bool === _ 165 [[ 335 306 ]] [le] !orig=[277]
334 IfFalse === 333 [[ 325 335 240 ]] #0 !orig=[270],[230] !jvms: X::test @ bci:23 (line 13)
335 RangeCheck === 334 272 [[ 336 343 ]] P=0.000001, C=-1.000000 !orig=[278],[247] !jvms: X::test @ bci:24 (line 13)
336 IfFalse === 335 [[ 322 324 328 ]] #0 !orig=[279],[248] !jvms: X::test @ bci:24 (line 13)
---
158 ConL === 0 [[ 159 177 326 ]] #long:16
331 CastPP === 332 281 [[ 321 321 326 326 328 252 234 259 234 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * !orig=[222] !jvms: X::test @ bci:23 (line 13)
258 StoreB === 287 207 177 240 [[ 260 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !jvms: X::test @ bci:24 (line 13)
324 StoreB === 336 7 177 325 [[ 323 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !orig=258 !jvms: X::test @ bci:24 (line 13)
287 Loop === 287 328 259 [[ 287 207 259 263 258 ]] inner !orig=[204] !jvms: X::test @ bci:10 (line 10)
333 RangeCheck === 332 318 [[ 334 340 ]] P=0.000001, C=-1.000000 !orig=[269],[229] !jvms: X::test @ bci:23 (line 13)
326 AddP === _ 331 331 158 [[ 325 240 ]] !orig=[239] !jvms: X::test @ bci:23 (line 13)
207 Phi === 287 324 258 [[ 240 258 ]] #memory Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; !jvms: X::test @ bci:10 (line 10)
334 IfFalse === 333 [[ 325 335 240 ]] #0 !orig=[270],[230] !jvms: X::test @ bci:23 (line 13)
240 LoadB === 334 207 326 [[ 258 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; #byte !jvms: X::test @ bci:23 (line 13)
---
326 AddP === _ 331 331 158 [[ 325 240 ]] !orig=[239] !jvms: X::test @ bci:23 (line 13)
334 IfFalse === 333 [[ 325 335 240 ]] #0 !orig=[270],[230] !jvms: X::test @ bci:23 (line 13)
158 ConL === 0 [[ 159 177 326 ]] #long:16
37 CastPP === 29 10 [[ 252 39 39 252 177 177 259 94 234 328 234 179 ]] #byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact * !jvms: X::test @ bci:4 (line 9)
324 StoreB === 336 7 177 325 [[ 323 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !orig=258 !jvms: X::test @ bci:24 (line 13)
259 SafePoint === 287 1 260 1 1 263 37 331 22 [[ 287 ]] SafePoint !jvms: X::test @ bci:25 (line 13)
328 SafePoint === 336 1 323 1 1 322 37 331 22 [[ 287 ]] SafePoint !orig=259 !jvms: X::test @ bci:25 (line 13)
240 LoadB === 334 207 326 [[ 258 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; #byte !jvms: X::test @ bci:23 (line 13)
177 AddP === _ 37 37 158 [[ 178 258 324 ]] !jvms: X::test @ bci:15 (line 10)
207 Phi === 287 324 258 [[ 240 258 ]] #memory Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; !jvms: X::test @ bci:10 (line 10)
287 Loop === 287 328 259 [[ 287 207 259 263 258 ]] inner !orig=[204] !jvms: X::test @ bci:10 (line 10)
258 StoreB === 287 207 177 240 [[ 260 207 ]] @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact+any *, idx=5; Memory: @byte[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact[0] *, idx=5; !jvms: X::test @ bci:24 (line 13)
---
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/oracle-work/jdk-fork2/open/src/hotspot/share/opto/compile.cpp:4356), pid=4112696, tid=4112710
# assert(!dead_nodes) failed: using nodes must be reachable from root
#
# JRE version: Java(TM) SE Runtime Environment (24.0) (fastdebug build 24-internal-2024-07-04-1039391.emanuel...)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 24-internal-2024-07-04-1039391.emanuel..., compiled mode, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x9d4c75] Compile::verify_graph_edges(bool) [clone .part.0]+0x615
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E" (or dumping to /oracle-work/xyz/core.4112696)
#
# An error report file with more information is saved as:
# /oracle-work/xyz/hs_err_pid4112696.log
#
# Compiler replay data is saved as:
# /oracle-work/xyz/replay_pid4112696.log
#
# If you would like to submit a bug report, please visit:
# https://bugreport.java.com/bugreport/crash.jsp
#
Current CompileTask:
C2:4722 98 b X::test (28 bytes)
Stack: [0x00007f239dbfc000,0x00007f239dcfd000], sp=0x00007f239dcf8020, free space=1008k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x9d4c75] Compile::verify_graph_edges(bool) [clone .part.0]+0x615 (compile.cpp:4356)
V [libjvm.so+0x1526dcb] PhaseCCP::transform(Node*)+0x6db (phaseX.cpp:2092)
V [libjvm.so+0x152142b] PhaseCCP::do_transform()+0x1b (phaseX.cpp:2022)
V [libjvm.so+0x9df573] Compile::Optimize()+0x7b3 (compile.cpp:2399)
V [libjvm.so+0x9e3326] Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x1b06 (compile.cpp:852)
V [libjvm.so+0x835575] C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x1d5 (c2compiler.cpp:142)
V [libjvm.so+0x9eef68] CompileBroker::invoke_compiler_on_method(CompileTask*)+0x928 (compileBroker.cpp:2303)
V [libjvm.so+0x9efbf8] CompileBroker::compiler_thread_loop()+0x478 (compileBroker.cpp:1961)
V [libjvm.so+0xe994dc] JavaThread::thread_main_inner()+0xcc (javaThread.cpp:757)
V [libjvm.so+0x17b9076] Thread::call_run()+0xb6 (thread.cpp:225)
- causes
-
JDK-8352591 Missing UnlockDiagnosticVMOptions in VerifyGraphEdgesWithDeadCodeCheckFromSafepoints test
-
- Resolved
-
- relates to
-
JDK-8352641 [TESTBUG] VerifyGraphEdgesWithDeadCodeCheckFromSafepoints.java fails due to missing UnlockDiagnosticVMOptions
-
- Closed
-
- links to
-
Commit(master) openjdk/jdk/2bc4f64c
-
Review(master) openjdk/jdk/23977