Skip to content

Conversation

pull[bot]
Copy link

@pull pull bot commented Oct 15, 2025

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

tekknolagi and others added 6 commits October 15, 2025 14:24
This fixes a reliable "ZJIT saw a dead object" repro on my machine, and should
fix the flaky ones on CI. The code for disabling the GC is the same as
the code in newobj_of().

See: https://github.com/ruby/ruby/actions/runs/18511676257/job/52753782036
This is due to the way MMTK frees objects, which is on another native thread.
Due to this, there's no `ec` so we can't grab the VM Lock.

This was causing issues in release builds of MMTK on CI like:

```
  /home/runner/work/ruby/ruby/build/ruby(sigsegv+0x46) [0x557905117ef6] ../src/signal.c:948
  /lib/x86_64-linux-gnu/libc.so.6(0x7f555f845330) [0x7f555f845330]
  /home/runner/work/ruby/ruby/build/ruby(rb_ec_thread_ptr+0x0) [0x5579051d59d5] ../src/vm_core.h:2087
  /home/runner/work/ruby/ruby/build/ruby(rb_ec_ractor_ptr) ../src/vm_core.h:2036
  /home/runner/work/ruby/ruby/build/ruby(rb_current_execution_context) ../src/vm_core.h:2105
  /home/runner/work/ruby/ruby/build/ruby(rb_current_ractor_raw) ../src/vm_core.h:2104
  /home/runner/work/ruby/ruby/build/ruby(rb_current_ractor) ../src/vm_core.h:2112
  /home/runner/work/ruby/ruby/build/ruby(rb_current_ractor) ../src/vm_core.h:2110
  /home/runner/work/ruby/ruby/build/ruby(vm_locked) ../src/vm_sync.c:15
  /home/runner/work/ruby/ruby/build/ruby(rb_vm_lock_enter_body) ../src/vm_sync.c:141
  /home/runner/work/ruby/ruby/build/ruby(rb_vm_lock_enter+0xa) [0x557905390a5a] ../src/vm_sync.h:76
  /home/runner/work/ruby/ruby/build/ruby(fiber_pool_stack_release) ../src/cont.c:777
  /home/runner/work/ruby/ruby/build/ruby(fiber_stack_release+0xe) [0x557905392075] ../src/cont.c:919
  /home/runner/work/ruby/ruby/build/ruby(cont_free) ../src/cont.c:1087
  /home/runner/work/ruby/ruby/build/ruby(fiber_free) ../src/cont.c:1180
```

This would have ran into an assertion error in a debug build but we don't run debug builds of MMTK on Github's CI.

Co-authored-by: [email protected]
Fixes Shopify#793

## Testing on `liquid-render`:

<details>

<summary>Before patch:</summary>

```
***ZJIT: Printing ZJIT statistics on exit***
Top-20 not inlined C methods (96.8% of total 20,222,783):
         Kernel#respond_to?: 9,725,886 (48.1%)
                  Hash#key?: 4,589,528 (22.7%)
               Set#include?: 1,493,789 ( 7.4%)
                 String#===:   616,183 ( 3.0%)
                    Hash#[]:   453,675 ( 2.2%)
                  String#<<:   386,831 ( 1.9%)
                 Integer#<<:   319,768 ( 1.6%)
               Kernel#is_a?:   312,176 ( 1.5%)
                  Integer#/:   238,502 ( 1.2%)
              Kernel#format:   238,502 ( 1.2%)
                   Array#<<:   220,724 ( 1.1%)
           Class#last_match:   179,182 ( 0.9%)
                   Hash#[]=:   167,728 ( 0.8%)
  CGI::EscapeExt#escapeHTML:   106,471 ( 0.5%)
                Array#shift:    98,030 ( 0.5%)
              Array#unshift:    90,851 ( 0.4%)
                  String#=~:    90,637 ( 0.4%)
         String#start_with?:    88,122 ( 0.4%)
                 Regexp#===:    85,648 ( 0.4%)
              String#empty?:    80,950 ( 0.4%)
Top-20 not annotated C methods (97.0% of total 20,268,253):
         Kernel#respond_to?: 9,725,886 (48.0%)
                  Hash#key?: 4,589,528 (22.6%)
               Set#include?: 1,493,789 ( 7.4%)
                 String#===:   616,183 ( 3.0%)
                    Hash#[]:   453,675 ( 2.2%)
               Kernel#is_a?:   397,366 ( 2.0%)
                  String#<<:   386,831 ( 1.9%)
                 Integer#<<:   319,768 ( 1.6%)
                  Integer#/:   238,502 ( 1.2%)
              Kernel#format:   238,502 ( 1.2%)
                   Array#<<:   220,724 ( 1.1%)
           Class#last_match:   179,182 ( 0.9%)
                   Hash#[]=:   167,728 ( 0.8%)
  CGI::EscapeExt#escapeHTML:   106,471 ( 0.5%)
                Array#shift:    98,030 ( 0.5%)
              Array#unshift:    90,851 ( 0.4%)
                  String#=~:    90,637 ( 0.4%)
         String#start_with?:    88,122 ( 0.4%)
                 Regexp#===:    85,648 ( 0.4%)
              String#empty?:    80,950 ( 0.4%)
Top-2 not optimized method types for send (100.0% of total 1,180):
   iseq: 602 (51.0%)
  cfunc: 578 (49.0%)
Top-3 not optimized method types for send_without_block (100.0% of total 4,896,785):
       iseq: 4,669,764 (95.4%)
  optimized:   227,001 ( 4.6%)
      alias:        20 ( 0.0%)
Top-9 not optimized instructions (100.0% of total 1,255,287):
             invokeblock: 430,174 (34.3%)
                 opt_neq: 319,471 (25.5%)
                 opt_and: 319,471 (25.5%)
                  opt_eq: 127,926 (10.2%)
                  opt_le:  31,238 ( 2.5%)
             invokesuper:  23,409 ( 1.9%)
               opt_minus:   2,934 ( 0.2%)
  opt_send_without_block:     562 ( 0.0%)
                  opt_or:     102 ( 0.0%)
Top-7 send fallback reasons (100.0% of total 17,930,659):
                              send_no_profiles: 6,145,096 (34.3%)
                send_without_block_polymorphic: 5,459,600 (30.4%)
  send_without_block_not_optimized_method_type: 4,896,785 (27.3%)
                     not_optimized_instruction: 1,255,287 ( 7.0%)
                send_without_block_no_profiles:   170,037 ( 0.9%)
                      obj_to_string_not_string:     2,674 ( 0.0%)
                send_not_optimized_method_type:     1,180 ( 0.0%)
Top-3 unhandled YARV insns (100.0% of total 157,831):
  getclassvariable: 157,694 (99.9%)
              once:     121 ( 0.1%)
       getconstant:      16 ( 0.0%)
Top-2 compile error reasons (100.0% of total 8,905,991):
  register_spill_on_alloc: 8,905,891 (100.0%)
  register_spill_on_ccall:       100 ( 0.0%)
Top-9 side exit reasons (100.0% of total 26,549,652):
                        compile_error: 8,905,991 (33.5%)
                  guard_shape_failure: 6,590,116 (24.8%)
                   guard_type_failure: 4,882,217 (18.4%)
                      unhandled_splat: 4,150,547 (15.6%)
                      unhandled_kwarg: 1,827,728 ( 6.9%)
                  unhandled_yarv_insn:   157,831 ( 0.6%)
                   unhandled_hir_insn:    34,072 ( 0.1%)
                           patchpoint:     1,100 ( 0.0%)
  block_param_proxy_not_iseq_or_ifunc:        50 ( 0.0%)
                             send_count: 72,944,863
                     dynamic_send_count: 17,930,659 (24.6%)
                   optimized_send_count: 55,014,204 (75.4%)
              iseq_optimized_send_count: 26,520,888 (36.4%)
      inline_cfunc_optimized_send_count:  8,270,533 (11.3%)
non_variadic_cfunc_optimized_send_count:  9,344,065 (12.8%)
    variadic_cfunc_optimized_send_count: 10,878,718 (14.9%)
dynamic_getivar_count:                        2,171,396
dynamic_setivar_count:                        1,737,553
compiled_iseq_count:                                383
failed_iseq_count:                                   46
compile_time:                                     820ms
profile_time:                                       4ms
gc_time:                                           22ms
invalidation_time:                                  0ms
vm_write_pc_count:                           71,973,068
vm_write_sp_count:                           71,544,492
vm_write_locals_count:                       71,544,492
vm_write_stack_count:                        71,544,492
vm_write_to_parent_iseq_local_count:          1,070,897
vm_read_from_parent_iseq_local_count:        27,449,010
code_region_bytes:                            2,113,536
side_exit_count:                             26,549,652
total_insn_count:                           908,528,764
vm_insn_count:                              484,633,128
zjit_insn_count:                            423,895,636
ratio_in_zjit:                                    46.7%
```

</details>




<details>

<summary>after patch:</summary>
```
***ZJIT: Printing ZJIT statistics on exit***
Top-20 not inlined C methods (97.2% of total 19,769,108):
         Kernel#respond_to?: 9,725,886 (49.2%)
                  Hash#key?: 4,589,528 (23.2%)
               Set#include?: 1,493,789 ( 7.6%)
                 String#===:   616,183 ( 3.1%)
                  String#<<:   386,831 ( 2.0%)
                 Integer#<<:   319,768 ( 1.6%)
               Kernel#is_a?:   312,176 ( 1.6%)
                  Integer#/:   238,502 ( 1.2%)
              Kernel#format:   238,502 ( 1.2%)
                   Array#<<:   220,724 ( 1.1%)
           Class#last_match:   179,182 ( 0.9%)
                   Hash#[]=:   167,728 ( 0.8%)
  CGI::EscapeExt#escapeHTML:   106,471 ( 0.5%)
                Array#shift:    98,030 ( 0.5%)
              Array#unshift:    90,851 ( 0.5%)
                  String#=~:    90,637 ( 0.5%)
         String#start_with?:    88,122 ( 0.4%)
                 Regexp#===:    85,648 ( 0.4%)
              String#empty?:    80,950 ( 0.4%)
                 Array#push:    78,615 ( 0.4%)
Top-20 not annotated C methods (97.4% of total 19,814,578):
         Kernel#respond_to?: 9,725,886 (49.1%)
                  Hash#key?: 4,589,528 (23.2%)
               Set#include?: 1,493,789 ( 7.5%)
                 String#===:   616,183 ( 3.1%)
               Kernel#is_a?:   397,366 ( 2.0%)
                  String#<<:   386,831 ( 2.0%)
                 Integer#<<:   319,768 ( 1.6%)
                  Integer#/:   238,502 ( 1.2%)
              Kernel#format:   238,502 ( 1.2%)
                   Array#<<:   220,724 ( 1.1%)
           Class#last_match:   179,182 ( 0.9%)
                   Hash#[]=:   167,728 ( 0.8%)
  CGI::EscapeExt#escapeHTML:   106,471 ( 0.5%)
                Array#shift:    98,030 ( 0.5%)
              Array#unshift:    90,851 ( 0.5%)
                  String#=~:    90,637 ( 0.5%)
         String#start_with?:    88,122 ( 0.4%)
                 Regexp#===:    85,648 ( 0.4%)
              String#empty?:    80,950 ( 0.4%)
                 Array#push:    78,615 ( 0.4%)
Top-2 not optimized method types for send (100.0% of total 1,180):
   iseq: 602 (51.0%)
  cfunc: 578 (49.0%)
Top-3 not optimized method types for send_without_block (100.0% of total 4,896,785):
       iseq: 4,669,764 (95.4%)
  optimized:   227,001 ( 4.6%)
      alias:        20 ( 0.0%)
Top-9 not optimized instructions (100.0% of total 1,255,287):
             invokeblock: 430,174 (34.3%)
                 opt_neq: 319,471 (25.5%)
                 opt_and: 319,471 (25.5%)
                  opt_eq: 127,926 (10.2%)
                  opt_le:  31,238 ( 2.5%)
             invokesuper:  23,409 ( 1.9%)
               opt_minus:   2,934 ( 0.2%)
  opt_send_without_block:     562 ( 0.0%)
                  opt_or:     102 ( 0.0%)
Top-7 send fallback reasons (100.0% of total 17,930,659):
                              send_no_profiles: 6,145,096 (34.3%)
                send_without_block_polymorphic: 5,459,600 (30.4%)
  send_without_block_not_optimized_method_type: 4,896,785 (27.3%)
                     not_optimized_instruction: 1,255,287 ( 7.0%)
                send_without_block_no_profiles:   170,037 ( 0.9%)
                      obj_to_string_not_string:     2,674 ( 0.0%)
                send_not_optimized_method_type:     1,180 ( 0.0%)
Top-3 unhandled YARV insns (100.0% of total 157,831):
  getclassvariable: 157,694 (99.9%)
              once:     121 ( 0.1%)
       getconstant:      16 ( 0.0%)
Top-2 compile error reasons (100.0% of total 8,905,991):
  register_spill_on_alloc: 8,905,891 (100.0%)
  register_spill_on_ccall:       100 ( 0.0%)
Top-9 side exit reasons (100.0% of total 26,549,652):
                        compile_error: 8,905,991 (33.5%)
                  guard_shape_failure: 6,590,116 (24.8%)
                   guard_type_failure: 4,882,217 (18.4%)
                      unhandled_splat: 4,150,547 (15.6%)
                      unhandled_kwarg: 1,827,728 ( 6.9%)
                  unhandled_yarv_insn:   157,831 ( 0.6%)
                   unhandled_hir_insn:    34,072 ( 0.1%)
                           patchpoint:     1,100 ( 0.0%)
  block_param_proxy_not_iseq_or_ifunc:        50 ( 0.0%)
                             send_count: 72,491,188
                     dynamic_send_count: 17,930,659 (24.7%)
                   optimized_send_count: 54,560,529 (75.3%)
              iseq_optimized_send_count: 26,520,888 (36.6%)
      inline_cfunc_optimized_send_count:  8,270,533 (11.4%)
non_variadic_cfunc_optimized_send_count:  8,890,390 (12.3%)
    variadic_cfunc_optimized_send_count: 10,878,718 (15.0%)
dynamic_getivar_count:                        2,171,396
dynamic_setivar_count:                        1,737,553
compiled_iseq_count:                                383
failed_iseq_count:                                   46
compile_time:                                     808ms
profile_time:                                       4ms
gc_time:                                           21ms
invalidation_time:                                  0ms
vm_write_pc_count:                           71,973,068
vm_write_sp_count:                           71,544,492
vm_write_locals_count:                       71,544,492
vm_write_stack_count:                        71,544,492
vm_write_to_parent_iseq_local_count:          1,070,897
vm_read_from_parent_iseq_local_count:        27,449,010
code_region_bytes:                            2,097,152
side_exit_count:                             26,549,652
total_insn_count:                           908,528,764
vm_insn_count:                              484,633,128
zjit_insn_count:                            423,895,636
ratio_in_zjit:                                    46.7% 
```
</details>

## Testing on `lobsters`:

<details>

<summary>Before patch:</summary>

```
***ZJIT: Printing ZJIT statistics on exit***
Top-20 not inlined C methods (71.0% of total 28,729,305):
                                    Hash#[]: 8,490,837 (29.6%)
                               Kernel#is_a?: 1,861,955 ( 6.5%)
                                  String#<<: 1,773,932 ( 6.2%)
                                   Hash#[]=: 1,159,328 ( 4.0%)
                              Regexp#match?:   775,654 ( 2.7%)
                              String#empty?:   724,503 ( 2.5%)
                                  Hash#key?:   691,233 ( 2.4%)
                         Kernel#respond_to?:   608,714 ( 2.1%)
                              TrueClass#===:   451,557 ( 1.6%)
                             FalseClass#===:   442,907 ( 1.5%)
                             Array#include?:   429,408 ( 1.5%)
         ActiveSupport::OrderedOptions#_get:   377,468 ( 1.3%)
                         String#start_with?:   373,685 ( 1.3%)
                 ObjectSpace::WeakKeyMap#[]:   356,664 ( 1.2%)
                            Kernel#kind_of?:   349,451 ( 1.2%)
                                 Kernel#dup:   328,120 ( 1.1%)
                                  Class#new:   310,590 ( 1.1%)
                        Kernel#block_given?:   307,113 ( 1.1%)
                                  String#==:   290,654 ( 1.0%)
                                 Hash#fetch:   290,533 ( 1.0%)
Top-20 not annotated C methods (71.7% of total 29,033,802):
                                    Hash#[]: 8,490,847 (29.2%)
                               Kernel#is_a?: 2,231,950 ( 7.7%)
                                  String#<<: 1,773,932 ( 6.1%)
                                   Hash#[]=: 1,159,507 ( 4.0%)
                              Regexp#match?:   775,654 ( 2.7%)
                              String#empty?:   739,580 ( 2.5%)
                                  Hash#key?:   691,233 ( 2.4%)
                         Kernel#respond_to?:   608,714 ( 2.1%)
                              TrueClass#===:   451,557 ( 1.6%)
                             FalseClass#===:   442,907 ( 1.5%)
                             Array#include?:   429,408 ( 1.5%)
         ActiveSupport::OrderedOptions#_get:   377,468 ( 1.3%)
                         String#start_with?:   373,685 ( 1.3%)
                 ObjectSpace::WeakKeyMap#[]:   356,664 ( 1.2%)
                            Kernel#kind_of?:   349,486 ( 1.2%)
                                 Kernel#dup:   328,127 ( 1.1%)
                        Kernel#block_given?:   327,655 ( 1.1%)
                                  Class#new:   310,590 ( 1.1%)
                                  String#==:   296,624 ( 1.0%)
                                 Hash#fetch:   290,533 ( 1.0%)
Top-2 not optimized method types for send (100.0% of total 96,231):
  cfunc: 75,873 (78.8%)
   iseq: 20,358 (21.2%)
Top-6 not optimized method types for send_without_block (100.0% of total 8,044,793):
       iseq: 4,034,262 (50.1%)
    bmethod: 1,757,537 (21.8%)
  optimized: 1,647,169 (20.5%)
      alias:   596,446 ( 7.4%)
       null:     8,161 ( 0.1%)
      cfunc:     1,218 ( 0.0%)
Top-13 not optimized instructions (100.0% of total 7,507,191):
             invokesuper: 4,343,829 (57.9%)
             invokeblock: 1,323,655 (17.6%)
             sendforward:   842,491 (11.2%)
                  opt_eq:   722,952 ( 9.6%)
                opt_plus:   145,599 ( 1.9%)
               opt_minus:    52,269 ( 0.7%)
  opt_send_without_block:    39,595 ( 0.5%)
                 opt_neq:    15,048 ( 0.2%)
                opt_mult:    13,826 ( 0.2%)
                  opt_or:     7,452 ( 0.1%)
                  opt_lt:       348 ( 0.0%)
                  opt_ge:        91 ( 0.0%)
                  opt_gt:        36 ( 0.0%)
Top-9 send fallback reasons (100.0% of total 45,075,567):
                send_without_block_polymorphic: 17,072,731 (37.9%)
                              send_no_profiles: 10,490,735 (23.3%)
  send_without_block_not_optimized_method_type:  8,044,793 (17.8%)
                     not_optimized_instruction:  7,507,191 (16.7%)
                send_without_block_no_profiles:  1,816,853 ( 4.0%)
                send_not_optimized_method_type:     96,231 ( 0.2%)
       send_without_block_cfunc_array_variadic:     31,156 ( 0.1%)
                      obj_to_string_not_string:     15,303 ( 0.0%)
       send_without_block_direct_too_many_args:        574 ( 0.0%)
Top-9 unhandled YARV insns (100.0% of total 1,279,306):
         expandarray: 660,222 (51.6%)
        checkkeyword: 316,124 (24.7%)
    getclassvariable: 119,678 ( 9.4%)
       getblockparam:  88,485 ( 6.9%)
  invokesuperforward:  78,843 ( 6.2%)
   opt_duparray_send:  14,149 ( 1.1%)
         getconstant:   1,496 ( 0.1%)
          checkmatch:     290 ( 0.0%)
                once:      19 ( 0.0%)
Top-2 compile error reasons (100.0% of total 6,508,618):
  register_spill_on_alloc: 6,162,701 (94.7%)
  register_spill_on_ccall:   345,917 ( 5.3%)
Top-14 side exit reasons (100.0% of total 19,988,958):
                        compile_error: 6,508,618 (32.6%)
                   guard_type_failure: 5,255,050 (26.3%)
                  guard_shape_failure: 3,698,481 (18.5%)
                  unhandled_yarv_insn: 1,279,306 ( 6.4%)
  block_param_proxy_not_iseq_or_ifunc:   990,585 ( 5.0%)
                      unhandled_kwarg:   801,146 ( 4.0%)
                unknown_newarray_send:   539,110 ( 2.7%)
                           patchpoint:   496,826 ( 2.5%)
                      unhandled_splat:   242,104 ( 1.2%)
                   unhandled_hir_insn:   147,346 ( 0.7%)
           block_param_proxy_modified:    29,122 ( 0.1%)
                            interrupt:     1,072 ( 0.0%)
               obj_to_string_fallback:       170 ( 0.0%)
               guard_type_not_failure:        22 ( 0.0%)
                             send_count: 118,969,379
                     dynamic_send_count:  45,075,567 (37.9%)
                   optimized_send_count:  73,893,812 (62.1%)
              iseq_optimized_send_count:  32,439,432 (27.3%)
      inline_cfunc_optimized_send_count:  12,725,075 (10.7%)
non_variadic_cfunc_optimized_send_count:  24,121,279 (20.3%)
    variadic_cfunc_optimized_send_count:   4,608,026 ( 3.9%)
dynamic_getivar_count:                      13,002,365
dynamic_setivar_count:                      12,402,229
compiled_iseq_count:                             4,817
failed_iseq_count:                                 466
compile_time:                                  8,961ms
profile_time:                                     68ms
gc_time:                                          41ms
invalidation_time:                               288ms
vm_write_pc_count:                         113,940,194
vm_write_sp_count:                         111,595,088
vm_write_locals_count:                     111,595,088
vm_write_stack_count:                      111,595,088
vm_write_to_parent_iseq_local_count:           514,997
vm_read_from_parent_iseq_local_count:       11,288,600
code_region_bytes:                          22,970,368
side_exit_count:                            19,988,958
total_insn_count:                          928,321,939
vm_insn_count:                             297,374,855
zjit_insn_count:                           630,947,084
ratio_in_zjit:                                   68.0%
```

</details>




<details>

<summary>after patch:</summary>

```
***ZJIT: Printing ZJIT statistics on exit***
Top-20 not inlined C methods (60.9% of total 19,827,919):
                               Kernel#is_a?: 1,827,297 ( 9.2%)
                                  String#<<: 1,764,393 ( 8.9%)
                                   Hash#[]=: 1,159,637 ( 5.8%)
                              Regexp#match?:   775,625 ( 3.9%)
                              String#empty?:   723,469 ( 3.6%)
                                  Hash#key?:   691,214 ( 3.5%)
                         Kernel#respond_to?:   602,389 ( 3.0%)
                              TrueClass#===:   447,671 ( 2.3%)
                             FalseClass#===:   439,274 ( 2.2%)
                             Array#include?:   425,491 ( 2.1%)
                                 Hash#fetch:   382,294 ( 1.9%)
                         String#start_with?:   373,684 ( 1.9%)
                 ObjectSpace::WeakKeyMap#[]:   356,654 ( 1.8%)
                            Kernel#kind_of?:   340,341 ( 1.7%)
                                 Kernel#dup:   328,108 ( 1.7%)
                                  Class#new:   309,571 ( 1.6%)
                        Kernel#block_given?:   307,098 ( 1.5%)
                                  String#==:   286,539 ( 1.4%)
                             BasicObject#!=:   284,640 ( 1.4%)
                              String#length:   256,345 ( 1.3%)
Top-20 not annotated C methods (62.1% of total 20,127,933):
                               Kernel#is_a?: 2,205,849 (11.0%)
                                  String#<<: 1,764,393 ( 8.8%)
                                   Hash#[]=: 1,159,816 ( 5.8%)
                              Regexp#match?:   775,625 ( 3.9%)
                              String#empty?:   738,546 ( 3.7%)
                                  Hash#key?:   691,214 ( 3.4%)
                         Kernel#respond_to?:   602,389 ( 3.0%)
                              TrueClass#===:   447,671 ( 2.2%)
                             FalseClass#===:   439,274 ( 2.2%)
                             Array#include?:   425,491 ( 2.1%)
                                 Hash#fetch:   382,294 ( 1.9%)
                         String#start_with?:   373,684 ( 1.9%)
                 ObjectSpace::WeakKeyMap#[]:   356,654 ( 1.8%)
                            Kernel#kind_of?:   340,375 ( 1.7%)
                                 Kernel#dup:   328,115 ( 1.6%)
                        Kernel#block_given?:   327,640 ( 1.6%)
                                  Class#new:   309,571 ( 1.5%)
                                  String#==:   292,509 ( 1.5%)
                             BasicObject#!=:   284,824 ( 1.4%)
                              String#length:   256,345 ( 1.3%)
Top-2 not optimized method types for send (100.0% of total 113,430):
  cfunc: 75,863 (66.9%)
   iseq: 37,567 (33.1%)
Top-6 not optimized method types for send_without_block (100.0% of total 8,005,732):
       iseq: 4,007,647 (50.1%)
    bmethod: 1,750,263 (21.9%)
  optimized: 1,647,088 (20.6%)
      alias:   591,356 ( 7.4%)
       null:     8,161 ( 0.1%)
      cfunc:     1,217 ( 0.0%)
Top-13 not optimized instructions (100.0% of total 7,569,803):
             invokesuper: 4,320,589 (57.1%)
             invokeblock: 1,321,548 (17.5%)
             sendforward:   841,452 (11.1%)
                  opt_eq:   811,601 (10.7%)
                opt_plus:   142,565 ( 1.9%)
               opt_minus:    52,268 ( 0.7%)
  opt_send_without_block:    42,982 ( 0.6%)
                 opt_neq:    15,047 ( 0.2%)
                opt_mult:    13,824 ( 0.2%)
                  opt_or:     7,452 ( 0.1%)
                  opt_lt:       348 ( 0.0%)
                  opt_ge:        91 ( 0.0%)
                  opt_gt:        36 ( 0.0%)
Top-9 send fallback reasons (100.0% of total 45,409,745):
                send_without_block_polymorphic: 17,360,049 (38.2%)
                              send_no_profiles: 10,502,130 (23.1%)
  send_without_block_not_optimized_method_type:  8,005,732 (17.6%)
                     not_optimized_instruction:  7,569,803 (16.7%)
                send_without_block_no_profiles:  1,811,570 ( 4.0%)
                send_not_optimized_method_type:    113,430 ( 0.2%)
       send_without_block_cfunc_array_variadic:     31,154 ( 0.1%)
                      obj_to_string_not_string:     15,303 ( 0.0%)
       send_without_block_direct_too_many_args:        574 ( 0.0%)
Top-9 unhandled YARV insns (100.0% of total 1,241,241):
         expandarray: 622,183 (50.1%)
        checkkeyword: 316,113 (25.5%)
    getclassvariable: 119,668 ( 9.6%)
       getblockparam:  88,481 ( 7.1%)
  invokesuperforward:  78,842 ( 6.4%)
   opt_duparray_send:  14,149 ( 1.1%)
         getconstant:   1,496 ( 0.1%)
          checkmatch:     290 ( 0.0%)
                once:      19 ( 0.0%)
Top-2 compile error reasons (100.0% of total 6,521,426):
  register_spill_on_alloc: 6,175,519 (94.7%)
  register_spill_on_ccall:   345,907 ( 5.3%)
Top-14 side exit reasons (100.0% of total 19,869,193):
                        compile_error: 6,521,426 (32.8%)
                   guard_type_failure: 5,167,727 (26.0%)
                  guard_shape_failure: 3,708,529 (18.7%)
                  unhandled_yarv_insn: 1,241,241 ( 6.2%)
  block_param_proxy_not_iseq_or_ifunc:   990,130 ( 5.0%)
                      unhandled_kwarg:   800,104 ( 4.0%)
                unknown_newarray_send:   539,105 ( 2.7%)
                           patchpoint:   494,790 ( 2.5%)
                      unhandled_splat:   229,423 ( 1.2%)
                   unhandled_hir_insn:   147,342 ( 0.7%)
           block_param_proxy_modified:    28,111 ( 0.1%)
                            interrupt:     1,073 ( 0.0%)
               obj_to_string_fallback:       170 ( 0.0%)
               guard_type_not_failure:        22 ( 0.0%)
                             send_count: 109,972,903
                     dynamic_send_count:  45,409,745 (41.3%)
                   optimized_send_count:  64,563,158 (58.7%)
              iseq_optimized_send_count:  32,205,906 (29.3%)
      inline_cfunc_optimized_send_count:  12,529,333 (11.4%)
non_variadic_cfunc_optimized_send_count:  15,123,197 (13.8%)
    variadic_cfunc_optimized_send_count:   4,704,722 ( 4.3%)
dynamic_getivar_count:                       12,973,226
dynamic_setivar_count:                       12,381,984
compiled_iseq_count:                              4,816
failed_iseq_count:                                  467
compile_time:                                   8,116ms
profile_time:                                      59ms
gc_time:                                           35ms
invalidation_time:                                289ms
vm_write_pc_count:                          113,616,123
vm_write_sp_count:                          111,273,109
vm_write_locals_count:                      111,273,109
vm_write_stack_count:                       111,273,109
vm_write_to_parent_iseq_local_count:            516,816
vm_read_from_parent_iseq_local_count:        11,255,225
code_region_bytes:                           22,872,064
side_exit_count:                             19,869,193
total_insn_count:                           924,733,475
vm_insn_count:                              296,183,588
zjit_insn_count:                            628,549,887
ratio_in_zjit:                                    68.0%
```
</details>
@pull pull bot locked and limited conversation to collaborators Oct 15, 2025
@pull pull bot added the ⤵️ pull label Oct 15, 2025
@pull pull bot merged commit b052d70 into turkdevops:master Oct 15, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants