Skip to content

ZJIT: Remove GuardShape from known-frozen object with same shape - #15863

Merged
tekknolagi merged 7 commits into
ruby:masterfrom
39bytes:fold-guard-shape
Jan 14, 2026
Merged

tekknolagi merged 7 commits into
ruby:masterfrom
39bytes:fold-guard-shape

Conversation

@39bytes

@39bytes 39bytes commented Jan 13, 2026 •

Copy link
Copy Markdown
Contributor

Resolves Shopify#915

When we have LoadField with a Shape return type, we can fold it similar to the object case.
GuardBitEquals can be removed when the argument is Const and the values are equal.

The behaviors for loading instances variables from frozen/dynamic objects are already covered in existing tests so no new tests were added.

@matzbot
matzbot requested a review from a team January 13, 2026 19:07

@tekknolagi tekknolagi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks great --thank you!

Comment thread zjit/src/hir.rs
Comment thread zjit/src/hir.rs Outdated
Comment thread zjit/src/hir.rs Outdated
@cloudbees-smart-tests

cloudbees-smart-tests Bot commented Jan 13, 2026 •

Copy link
Copy Markdown

❌ 1/67284 Tests Failed

test/-ext-/iseq_load/test_iseq_load.rb#test_stressful_roundtrip
Failure:
TestIseqLoad#test_stressful_roundtrip [/home/runner/work/ruby/ruby/src/test/-ext-/iseq_load/test_iseq_load.rb:20]:
pid 83432 killed by SIGSEGV (signal 11) (core dumped)
| -:10: [BUG] Segmentation fault at 0x0000000000000000
| ruby 4.1.0dev (2026-01-13T20:15:32Z pull/15863/merge ff1f4d32e4) +PRISM +GC[mmtk] [x86_64-linux]
| 
| -- Control frame information -----------------------------------------------
| c:0005 p:---- s:0022 e:000021 l:y b:---- CFUNC  :to_a
| c:0004 p:0039 s:0018 e:000017 l:y b:0001 METHOD -:10
| c:0003 p:0013 s:0010 e:000009 l:y b:0001 METHOD -:16
| c:0002 p:0054 s:0006 e:000005 l:n b:---- EVAL   -:26 [FINISH]
| c:0001 p:0000 s:0003 E:002120 l:y b:---- DUMMY  [FINISH]
| 
| -- Ruby level backtrace information ----------------------------------------
| -:26:in '<main>'
| -:16:in 'test_bug8543'
| -:10:in 'assert_iseq_roundtrip'
| -:10:in 'to_a'
| 
| -- Threading information ---------------------------------------------------
| Total ractor count: 1
| Ruby thread count for this ractor: 1
| 
| -- Machine register context ------------------------------------------------
|  RIP: 0x00005654b62d8455 RBP: 0x0000000000000000 RSP: 0x00007ffcbc314c90
|  RAX: 0x00000200ffe68708 RBX: 0x0000000000000000 RCX: 0x0000000000000000
|  RDX: 0x000000000010c7f2 RDI: 0x00000200ffe68708 RSI: 0x00000200ffe68708
|   R8: 0x0000000000000004  R9: 0x00000c0803ff9a1c R10: 0x00007f2e98ac0cd8
|  R11: 0x0000000000000246 R12: 0x0000000000000003 R13: 0x0000000000000035
|  R14: 0x0000000000000001 R15: 0x00000200ffe68008 EFL: 0x0000000000010246
| 
| -- C level backtrace information -------------------------------------------
| /home/runner/work/ruby/ruby/build/ruby(rb_print_backtrace+0x14) [0x5654b646b6cf] ../src/vm_dump.c:1105
| /home/runner/work/ruby/ruby/build/ruby(rb_vm_bugreport) ../src/vm_dump.c:1450
| /home/runner/work/ruby/ruby/build/ruby(rb_bug_for_fatal_signal+0x102) [0x5654b6724a22] ../src/error.c:1131
| /home/runner/work/ruby/ruby/build/ruby(sigsegv+0x46) [0x5654b63a3826] ../src/signal.c:948
| /lib/x86_64-linux-gnu/libc.so.6(0x7f2e98c45330) [0x7f2e98c45330]
| /home/runner/work/ruby/ruby/build/ruby(iseq_data_to_ary+0xe5) [0x5654b62d8455] ../src/iseq.c:3381
| /home/runner/work/ruby/ruby/build/ruby(iseq_data_to_ary+0x6b2) [0x5654b62d8a22] ../src/iseq.c:3471
| /home/runner/work/ruby/ruby/build/ruby(vm_call_cfunc_with_frame_+0x10d) [0x5654b643661d] ../src/vm_insnhelper.c:3902
| /home/runner/work/ruby/ruby/build/ruby(vm_sendish+0x111) [0x5654b643fc21] ../src/vm_insnhelper.c:6124
| /home/runner/work/ruby/ruby/build/ruby(vm_exec_core+0x84) [0x5654b6458e74] /home/runner/work/ruby/ruby/build/insns.def:904
| /home/runner/work/ruby/ruby/build/ruby(vm_exec_loop+0xa) [0x5654b6449512] ../src/vm.c:2825
| /home/runner/work/ruby/ruby/build/ruby(rb_vm_exec) ../src/vm.c:2801
| /home/runner/work/ruby/ruby/build/ruby(rb_ec_exec_node+0xa5) [0x5654b625fee5] ../src/eval.c:283
| /home/runner/work/ruby/ruby/build/ruby(ruby_run_node+0x69) [0x5654b6262499] ../src/eval.c:321
| /home/runner/work/ruby/ruby/build/ruby(rb_main+0x21) [0x5654b625c966] ../src/main.c:42
| /home/runner/work/ruby/ruby/build/ruby(main) ../src/main.c:62
| /lib/x86_64-linux-gnu/libc.so.6(0x7f2e98c2a1ca) [0x7f2e98c2a1ca]
| /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x8b) [0x7f2e98c2a28b]
| [0x5654b625c9b5]
| 
| -- Other runtime information -----------------------------------------------
| 
| * Loaded script: -
| 
| * Ruby Box: disabled
| * Loaded features:
| 
|     0 enumerator.so
|     1 thread.rb
|     2 fiber.so
|     3 rational.so
|     4 complex.so
|     5 pathname.so
|     6 ruby2_keywords.rb
|     7 set.rb
|     8 /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/enc/encdb.so
|     9 /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/enc/trans/transdb.so
|    10 /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/-test-/iseq_load.so
|    11 /home/runner/work/ruby/ruby/src/lib/open3/version.rb
|    12 /home/runner/work/ruby/ruby/src/lib/open3.rb
|    13 /home/runner/work/ruby/ruby/src/lib/timeout.rb
|    14 /home/runner/work/ruby/ruby/build/rbconfig.rb
|    15 /home/runner/work/ruby/ruby/src/tool/lib/find_executable.rb
|    16 /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/rbconfig/sizeof.so
|    17 /home/runner/work/ruby/ruby/src/tool/lib/envutil.rb
|    18 /home/runner/work/ruby/ruby/src/tool/lib/colorize.rb
|    19 /home/runner/work/ruby/ruby/src/tool/lib/leakchecker.rb
|    20 /home/runner/work/ruby/ruby/src/lib/prettyprint.rb
|    21 /home/runner/work/ruby/ruby/src/lib/pp.rb
|    22 /home/runner/work/ruby/ruby/src/tool/lib/test/unit/assertions.rb
|    23 /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/-test-/sanitizers.so
|    24 /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/io/console.so
|    25 /home/runner/work/ruby/ruby/src/tool/lib/core_assertions.rb
|    26 /home/runner/work/ruby/ruby/src/tool/lib/test/unit/testcase.rb
|    27 /home/runner/work/ruby/ruby/src/tool/lib/test/jobserver.rb
|    28 /home/runner/work/ruby/ruby/src/lib/optparse.rb
|    29 /home/runner/work/ruby/ruby/src/tool/lib/test/unit.rb
| 
| * Process memory map:
| 
| 20000000000-20000010000 rw-p 00000000 00:00 0                            [anon:mmtk:misc:RawMemoryFreeList]
| 200ffc00000-20100000000 rw-p 00000000 00:00 0                            [anon:mmtk:space:immix]
| c0800000000-c0803c00000 ---p 00000000 00:00 0                            [anon:mmtk:sidemeta:immix:VO_BIT]
| c0803c00000-c0804000000 rw-p 00000000 00:00 0                            [anon:mmtk:sidemeta:immix:VO_BIT]
| c0804000000-c1000000000 ---p 00000000 00:00 0                            [anon:mmtk:sidemeta:immix:VO_BIT]
| c1000000000-c1800000000 ---p 00000000 00:00 0                            [anon:mmtk:sidemeta:immortal:VO_BIT]
| c1800000000-c2000000000 ---p 00000000 00:00 0                            [anon:mmtk:sidemeta:los:VO_BIT]
| c2000000000-c2800000000 ---p 00000000 00:00 0                            [anon:mmtk:sidemeta:nonmoving:VO_BIT]
| e0002000000-e0002400000 rw-p 00000000 00:00 0                            [anon:mmtk:sidemeta:immix:CHUNK_MARK]
| 4e0a00000000-4e0a00c00000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:IX_LINE_MARK]
| 4e0a00c00000-4e0a01000000 rw-p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:IX_LINE_MARK]
| 4e0a01000000-4e0c00000000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:IX_LINE_MARK]
| 4e1000000000-4e1200000000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:nonmoving:IX_LINE_MARK]
| 4e8804000000-4e8804400000 rw-p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:IX_BLOCK_DEFRAG]
| 4e8804400000-4e8808000000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:IX_BLOCK_DEFRAG]
| 4e8810000000-4e8814000000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:nonmoving:IX_BLOCK_DEFRAG]
| 4e8904000000-4e8904400000 rw-p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:IX_BLOCK_MARK]
| 4e8904400000-4e8908000000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:IX_BLOCK_MARK]
| 4e8910000000-4e8914000000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:nonmoving:IX_BLOCK_MARK]
| 52ba80000000-52ba87c00000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:VMLocalForwardingBitsSpec]
| 52ba87c00000-52ba88000000 rw-p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:VMLocalForwardingBitsSpec]
| 52ba88000000-52ca80000000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:VMLocalForwardingBitsSpec]
| 52ea80000000-52fa80000000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:nonmoving:VMLocalForwardingBitsSpec]
| 5654b61ec000-5654b6240000 r--p 00000000 08:11 352821                     /home/runner/work/ruby/ruby/build/ruby
| 5654b6240000-5654b67e5000 r-xp 00054000 08:11 352821                     /home/runner/work/ruby/ruby/build/ruby
| 5654b67e5000-5654b69be000 r--p 005f9000 08:11 352821                     /home/runner/work/ruby/ruby/build/ruby
| 5654b69be000-5654b69e2000 r--p 007d1000 08:11 352821                     /home/runner/work/ruby/ruby/build/ruby
| 5654b69e2000-5654b69e5000 rw-p 007f5000 08:11 352821                     /home/runner/work/ruby/ruby/build/ruby
| 5654b69e5000-5654b69fa000 rw-p 00000000 00:00 0 
| 5654cbed7000-5654cc3ad000 rw-p 00000000 00:00 0                          [heap]
| 56b280000000-56b283c00000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:VMLocalMarkBitSpec]
| 56b283c00000-56b284000000 rw-p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:VMLocalMarkBitSpec]
| 56b284000000-56ba80000000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:VMLocalMarkBitSpec]
| 56ba80000000-56c280000000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:immortal:VMLocalMarkBitSpec]
| 56ca80000000-56d280000000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:nonmoving:VMLocalMarkBitSpec]
| 58b280000000-58b283c00000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:VMLocalPinningBitSpec]
| 58b283c00000-58b284000000 rw-p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:VMLocalPinningBitSpec]
| 58b284000000-58ba80000000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:immix:VMLocalPinningBitSpec]
| 58ca80000000-58d280000000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:nonmoving:VMLocalPinningBitSpec]
| 5aaa98000000-5aaaa0000000 ---p 00000000 00:00 0                          [anon:mmtk:sidemeta:los:VMLocalLOSMarkNurserySpec]
| 7f2e68000000-7f2e80000000 rw-p 00000000 00:00 0                          [anon:Ruby:Init_default_shapes:shape_cache]
| 7f2e80000000-7f2e8006c000 rw-p 00000000 00:00 0 
| 7f2e8006c000-7f2e84000000 ---p 00000000 00:00 0 
| 7f2e84400000-7f2e87f10000 r--s 00000000 08:11 352821                     /home/runner/work/ruby/ruby/build/ruby
| 7f2e88000000-7f2e88060000 rw-p 00000000 00:00 0 
| 7f2e88060000-7f2e8c000000 ---p 00000000 00:00 0 
| 7f2e8c000000-7f2e8c065000 rw-p 00000000 00:00 0 
| 7f2e8c065000-7f2e90000000 ---p 00000000 00:00 0 
| 7f2e90000000-7f2e90061000 rw-p 00000000 00:00 0 
| 7f2e90061000-7f2e94000000 ---p 00000000 00:00 0 
| 7f2e94e00000-7f2e95007000 r--s 00000000 08:11 34624                      /usr/lib/x86_64-linux-gnu/libc.so.6
| 7f2e951bf000-7f2e951c0000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e951c0000-7f2e95201000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95201000-7f2e95202000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95202000-7f2e95243000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95243000-7f2e95244000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95244000-7f2e95285000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95285000-7f2e95286000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95286000-7f2e952c7000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e952c7000-7f2e952c8000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e952c8000-7f2e95309000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95309000-7f2e9530a000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9530a000-7f2e9534b000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9534b000-7f2e9534c000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9534c000-7f2e9538d000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9538d000-7f2e9538e000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9538e000-7f2e953cf000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e953cf000-7f2e953d0000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e953d0000-7f2e95411000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95411000-7f2e95412000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95412000-7f2e95453000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95453000-7f2e95454000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95454000-7f2e95495000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95495000-7f2e95496000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95496000-7f2e954d7000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e954d7000-7f2e954d8000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e954d8000-7f2e95519000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95519000-7f2e9551a000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9551a000-7f2e9555b000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9555b000-7f2e9555c000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9555c000-7f2e9559d000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9559d000-7f2e9559e000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9559e000-7f2e955df000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e955df000-7f2e955e0000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e955e0000-7f2e95621000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95621000-7f2e95622000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95622000-7f2e95663000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95663000-7f2e95664000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95664000-7f2e956a5000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e956a5000-7f2e956a6000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e956a6000-7f2e956e7000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e956e7000-7f2e956e8000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e956e8000-7f2e95729000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95729000-7f2e9572a000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9572a000-7f2e9576b000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9576b000-7f2e9576c000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9576c000-7f2e957ad000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e957ad000-7f2e957ae000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e957ae000-7f2e957ef000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e957ef000-7f2e957f0000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e957f0000-7f2e95831000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95831000-7f2e95832000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95832000-7f2e95873000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95873000-7f2e95874000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95874000-7f2e958b5000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e958b5000-7f2e958b6000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e958b6000-7f2e958f7000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e958f7000-7f2e958f8000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e958f8000-7f2e95939000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e95939000-7f2e9593a000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9593a000-7f2e9597b000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9597b000-7f2e9597c000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e9597c000-7f2e959bd000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e959bd000-7f2e959be000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e959be000-7f2e959ff000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
| 7f2e959ff000-7f2e95a00000 ---p 00000000 00:00 0 
| 7f2e95a00000-7f2e96a00000 rw-p 00000000 00:00 0 
| 7f2e96a00000-7f2e97e00000 rw-p 00000000 00:00 0                          [anon:Ruby:Init_default_shapes:shape_list]
| 7f2e97ffc000-7f2e97ffd000 ---p 00000000 00:00 0 
| 7f2e97ffd000-7f2e981fd000 rw-p 00000000 00:00 0 
| 7f2e981fd000-7f2e981fe000 ---p 00000000 00:00 0 
| 7f2e981fe000-7f2e983fe000 rw-p 00000000 00:00 0 
| 7f2e983fe000-7f2e983ff000 ---p 00000000 00:00 0 
| 7f2e983ff000-7f2e985ff000 rw-p 00000000 00:00 0 
| 7f2e985ff000-7f2e98600000 ---p 00000000 00:00 0 
| 7f2e98600000-7f2e98800000 rw-p 00000000 00:00 0 
| 7f2e98800000-7f2e98851000 r--p 00000000 08:11 554631                     /home/runner/ruby_gc/librubygc.mmtk.so
| 7f2e98851000-7f2e98a08000 r-xp 00051000 08:11 554631                     /home/runner/ruby_gc/librubygc.mmtk.so
| 7f2e98a08000-7f2e98ab2000 r--p 00208000 08:11 554631                     /home/runner/ruby_gc/librubygc.mmtk.so
| 7f2e98ab2000-7f2e98ae8000 r--p 002b1000 08:11 554631                     /home/runner/ruby_gc/librubygc.mmtk.so
| 7f2e98ae8000-7f2e98aea000 rw-p 002e7000 08:11 554631                     /home/runner/ruby_gc/librubygc.mmtk.so
| 7f2e98aea000-7f2e98aec000 rw-p 00000000 00:00 0 
| 7f2e98b73000-7f2e98b75000 r--p 00000000 08:11 536951                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/io/console.so
| 7f2e98b75000-7f2e98b7a000 r-xp 00002000 08:11 536951                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/io/console.so
| 7f2e98b7a000-7f2e98b7b000 r--p 00007000 08:11 536951                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/io/console.so
| 7f2e98b7b000-7f2e98b7c000 r--p 00008000 08:11 536951                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/io/console.so
| 7f2e98b7c000-7f2e98b7d000 rw-p 00009000 08:11 536951                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/io/console.so
| 7f2e98b7d000-7f2e98bdf000 rw-p 00000000 00:00 0 
| 7f2e98c00000-7f2e98c28000 r--p 00000000 08:11 34624                      /usr/lib/x86_64-linux-gnu/libc.so.6
| 7f2e98c28000-7f2e98db0000 r-xp 00028000 08:11 34624                      /usr/lib/x86_64-linux-gnu/libc.so.6
| 7f2e98db0000-7f2e98dff000 r--p 001b0000 08:11 34624                      /usr/lib/x86_64-linux-gnu/libc.so.6
| 7f2e98dff000-7f2e98e03000 r--p 001fe000 08:11 34624                      /usr/lib/x86_64-linux-gnu/libc.so.6
| 7f2e98e03000-7f2e98e05000 rw-p 00202000 08:11 34624                      /usr/lib/x86_64-linux-gnu/libc.so.6
| 7f2e98e05000-7f2e98e12000 rw-p 00000000 00:00 0 
| 7f2e98e1b000-7f2e98e1c000 r--p 00000000 08:11 536816                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/-test-/sanitizers.so
| 7f2e98e1c000-7f2e98e1d000 r-xp 00001000 08:11 536816                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/-test-/sanitizers.so
| 7f2e98e1d000-7f2e98e1e000 r--p 00002000 08:11 536816                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/-test-/sanitizers.so
| 7f2e98e1e000-7f2e98e1f000 r--p 00002000 08:11 536816                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/-test-/sanitizers.so
| 7f2e98e1f000-7f2e98e20000 rw-p 00003000 08:11 536816                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/-test-/sanitizers.so
| 7f2e98e20000-7f2e98e21000 r--p 00000000 08:11 536979                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/rbconfig/sizeof.so
| 7f2e98e21000-7f2e98e23000 r-xp 00001000 08:11 536979                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/rbconfig/sizeof.so
| 7f2e98e23000-7f2e98e24000 r--p 00003000 08:11 536979                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/rbconfig/sizeof.so
| 7f2e98e24000-7f2e98e25000 r--p 00003000 08:11 536979                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/rbconfig/sizeof.so
| 7f2e98e25000-7f2e98e26000 rw-p 00004000 08:11 536979                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/rbconfig/sizeof.so
| 7f2e98e26000-7f2e98e27000 r--p 00000000 08:11 536752                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/-test-/iseq_load.so
| 7f2e98e27000-7f2e98e28000 r-xp 00001000 08:11 536752                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/-test-/iseq_load.so
| 7f2e98e28000-7f2e98e29000 r--p 00002000 08:11 536752                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/-test-/iseq_load.so
| 7f2e98e29000-7f2e98e2a000 r--p 00002000 08:11 536752                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/-test-/iseq_load.so
| 7f2e98e2a000-7f2e98e2b000 rw-p 00003000 08:11 536752                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/-test-/iseq_load.so
| 7f2e98e2b000-7f2e98f31000 rw-p 00000000 00:00 0 
| 7f2e98f31000-7f2e98f35000 r--p 00000000 08:11 6579                       /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
| 7f2e98f35000-7f2e98f59000 r-xp 00004000 08:11 6579                       /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
| 7f2e98f59000-7f2e98f5d000 r--p 00028000 08:11 6579                       /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
| 7f2e98f5d000-7f2e98f5e000 r--p 0002b000 08:11 6579                       /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
| 7f2e98f5e000-7f2e98f5f000 rw-p 0002c000 08:11 6579                       /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
| 7f2e98f5f000-7f2e98f6f000 r--p 00000000 08:11 34627                      /usr/lib/x86_64-linux-gnu/libm.so.6
| 7f2e98f6f000-7f2e98fee000 r-xp 00010000 08:11 34627                      /usr/lib/x86_64-linux-gnu/libm.so.6
| 7f2e98fee000-7f2e99046000 r--p 0008f000 08:11 34627                      /usr/lib/x86_64-linux-gnu/libm.so.6
| 7f2e99046000-7f2e99047000 r--p 000e7000 08:11 34627                      /usr/lib/x86_64-linux-gnu/libm.so.6
| 7f2e99047000-7f2e99048000 rw-p 000e8000 08:11 34627                      /usr/lib/x86_64-linux-gnu/libm.so.6
| 7f2e99048000-7f2e9904a000 r--p 00000000 08:11 5138                       /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0
| 7f2e9904a000-7f2e9905f000 r-xp 00002000 08:11 5138                       /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0
| 7f2e9905f000-7f2e99078000 r--p 00017000 08:11 5138                       /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0
| 7f2e99078000-7f2e99079000 r--p 0002f000 08:11 5138                       /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0
| 7f2e99079000-7f2e9907a000 rw-p 00030000 08:11 5138                       /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0
| 7f2e9907a000-7f2e99082000 rw-p 00000000 00:00 0 
| 7f2e99082000-7f2e9908c000 r--p 00000000 08:11 6265                       /usr/lib/x86_64-linux-gnu/libgmp.so.10.5.0
| 7f2e9908c000-7f2e990ef000 r-xp 0000a000 08:11 6265                       /usr/lib/x86_64-linux-gnu/libgmp.so.10.5.0
| 7f2e990ef000-7f2e99104000 r--p 0006d000 08:11 6265                       /usr/lib/x86_64-linux-gnu/libgmp.so.10.5.0
| 7f2e99104000-7f2e99105000 r--p 00081000 08:11 6265                       /usr/lib/x86_64-linux-gnu/libgmp.so.10.5.0
| 7f2e99105000-7f2e99106000 rw-p 00082000 08:11 6265                       /usr/lib/x86_64-linux-gnu/libgmp.so.10.5.0
| 7f2e99106000-7f2e99108000 r--p 00000000 08:11 5152                       /usr/lib/x86_64-linux-gnu/libz.so.1.3
| 7f2e99108000-7f2e9911a000 r-xp 00002000 08:11 5152                       /usr/lib/x86_64-linux-gnu/libz.so.1.3
| 7f2e9911a000-7f2e99120000 r--p 00014000 08:11 5152                       /usr/lib/x86_64-linux-gnu/libz.so.1.3
| 7f2e99120000-7f2e99121000 r--p 0001a000 08:11 5152                       /usr/lib/x86_64-linux-gnu/libz.so.1.3
| 7f2e99121000-7f2e99122000 rw-p 0001b000 08:11 5152                       /usr/lib/x86_64-linux-gnu/libz.so.1.3
| 7f2e99122000-7f2e99123000 r--p 00000000 08:11 536526                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/enc/trans/transdb.so
| 7f2e99123000-7f2e99124000 r-xp 00001000 08:11 536526                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/enc/trans/transdb.so
| 7f2e99124000-7f2e99125000 r--p 00002000 08:11 536526                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/enc/trans/transdb.so
| 7f2e99125000-7f2e99126000 r--p 00002000 08:11 536526                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/enc/trans/transdb.so
| 7f2e99126000-7f2e99127000 rw-p 00003000 08:11 536526                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/enc/trans/transdb.so
| 7f2e99127000-7f2e99128000 r--p 00000000 08:11 536460                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/enc/encdb.so
| 7f2e99128000-7f2e99129000 r-xp 00001000 08:11 536460                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/enc/encdb.so
| 7f2e99129000-7f2e9912a000 r--p 00002000 08:11 536460                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/enc/encdb.so
| 7f2e9912a000-7f2e9912b000 r--p 00002000 08:11 536460                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/enc/encdb.so
| 7f2e9912b000-7f2e9912c000 rw-p 00003000 08:11 536460                     /home/runner/work/ruby/ruby/build/.ext/x86_64-linux/enc/encdb.so
| 7f2e9912c000-7f2e9912e000 rw-p 00000000 00:00 0 
| 7f2e9912e000-7f2e99132000 r--p 00000000 00:00 0                          [vvar]
| 7f2e99132000-7f2e99134000 r-xp 00000000 00:00 0                          [vdso]
| 7f2e99134000-7f2e99135000 r--p 00000000 08:11 34621                      /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
| 7f2e99135000-7f2e99160000 r-xp 00001000 08:11 34621                      /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
| 7f2e99160000-7f2e9916a000 r--p 0002c000 08:11 34621                      /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
| 7f2e9916a000-7f2e9916c000 r--p 00036000 08:11 34621                      /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
| 7f2e9916c000-7f2e9916e000 rw-p 00038000 08:11 34621                      /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
| 7ffcbc2f5000-7ffcbc319000 rw-p 00000000 00:00 0                          [stack]
| ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]
| 
| 


[-> View Test suite health in main branch]

@tekknolagi
tekknolagi merged commit 65a4845 into ruby:master Jan 14, 2026
90 of 91 checks passed
@tekknolagi

Copy link
Copy Markdown
Contributor

Thanks!

@39bytes
39bytes deleted the fold-guard-shape branch January 14, 2026 01:09
tekknolagi pushed a commit that referenced this pull request Jan 14, 2026
Resolves TODO added in #15863 (See #15863 (comment))

Adds a method `Type::has_value` for comparing value specialized types with a `Const`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ZJIT: Remove GuardShape from known-frozen object with same shape

3 participants