RFR: 8344116: C2: remove slice parameter from LoadNode::make [v13]

Roland Westrelin roland at openjdk.org
Fri Nov 28 14:54:52 UTC 2025


On Fri, 28 Nov 2025 08:54:49 GMT, Zihao Lin <duke at openjdk.org> wrote:

>> Here is a assert failed
>> 
>> command: main -XX:CompileCommand=dontinline,compiler.arraycopy.TestArrayCopyMemoryChain::test* -Xbatch compiler.arraycopy.TestArrayCopyMemoryChain
>> reason: User specified action: run main/othervm -XX:CompileCommand=dontinline,compiler.arraycopy.TestArrayCopyMemoryChain::test* -Xbatch compiler.arraycopy.TestArrayCopyMemoryChain 
>> started: Fri Nov 28 16:36:37.189 CST 2025
>> Mode: othervm [/othervm specified]
>> Process id: 16782
>> finished: Fri Nov 28 16:36:37.350 CST 2025
>> elapsed time (seconds): 0.161
>> configuration:
>> STDOUT:
>> CompileCommand: dontinline compiler/arraycopy/TestArrayCopyMemoryChain.test* bool dontinline = true
>> #
>> # A fatal error has been detected by the Java Runtime Environment:
>> #
>> #  Internal Error (/Users/linzihao/Desktop/jdk-dev/src/hotspot/share/opto/escape.cpp:4184), pid=16782, tid=26115
>> #  assert(result != nullptr) failed: new projection should have been allocated
>> #
>> # JRE version: OpenJDK Runtime Environment (26.0) (fastdebug build 26-internal-adhoc.linzihao.jdk-dev)
>> # Java VM: OpenJDK 64-Bit Server VM (fastdebug 26-internal-adhoc.linzihao.jdk-dev, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, bsd-aarch64)
>> # No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
>> #
>> # An error report file with more information is saved as:
>> # /Users/linzihao/Desktop/jdk-dev/build/macosx-aarch64-server-fastdebug/test-support/jtreg_test_hotspot_jtreg_compiler_arraycopy_TestArrayCopyMemoryChain_java/scratch/0/hs_err_pid16782.log
>> #
>> # Compiler replay data is saved as:
>> # /Users/linzihao/Desktop/jdk-dev/build/macosx-aarch64-server-fastdebug/test-support/jtreg_test_hotspot_jtreg_compiler_arraycopy_TestArrayCopyMemoryChain_java/scratch/0/replay_pid16782.log
>> #
>> # If you would like to submit a bug report, please visit:
>> #   https://bugreport.java.com/bugreport/crash.jsp
>> #
>
> The assert failed because `find_inst_mem()` skipped an Initialize memory projection whose `adr_type` was still the general slice, then tried to fetch the instance-specific projection from `_node_map` and got nullptr. That happens when a precise `NarrowMemProj` already exists: the code doesn’t create a new one and also never records the mapping, so later lookup fails.
> 
> The fix records the mapping even if the precise `NarrowMemProj` is already present (not newly created).

I had a closer look and I think you ran into an inconsistency. Let me see if I can get it fixed as a separate change.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/24258#discussion_r2571905920


More information about the hotspot-dev mailing list