Skip to content

Conversation

@pull
Copy link

@pull pull bot commented Nov 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 21 commits November 14, 2025 14:49
lobsters before:

```
Top-14 instructions with uncategorized fallback reason (100.0% of total 5,583,226):
             invokesuper: 3,039,693 (54.4%)
             invokeblock: 1,181,433 (21.2%)
             sendforward:   572,612 (10.3%)
                  opt_eq:   464,760 ( 8.3%)
                opt_plus:   169,904 ( 3.0%)
               opt_minus:    77,487 ( 1.4%)
  opt_send_without_block:    42,264 ( 0.8%)
                  opt_gt:    12,263 ( 0.2%)
                 opt_neq:     9,033 ( 0.2%)
                opt_mult:     8,384 ( 0.2%)
                  opt_or:     4,792 ( 0.1%)
                  opt_lt:       404 ( 0.0%)
                 opt_and:       160 ( 0.0%)
                  opt_ge:        37 ( 0.0%)
Top-15 send fallback reasons (100.0% of total 33,316,627):
                          send_without_block_polymorphic: 12,847,877 (38.6%)
                                           uncategorized:  5,583,226 (16.8%)
                            one_or_more_complex_arg_pass:  4,504,446 (13.5%)
                          send_not_optimized_method_type:  3,773,513 (11.3%)
                          send_without_block_no_profiles:  2,663,575 ( 8.0%)
                                        send_no_profiles:  2,206,479 ( 6.6%)
  send_without_block_not_optimized_method_type_optimized:    742,574 ( 2.2%)
                                        send_polymorphic:    467,750 ( 1.4%)
                          send_without_block_megamorphic:    428,364 ( 1.3%)
                 send_without_block_direct_too_many_args:     33,097 ( 0.1%)
                 send_without_block_cfunc_array_variadic:     22,255 ( 0.1%)
                                obj_to_string_not_string:     19,435 ( 0.1%)
                                        send_megamorphic:     17,153 ( 0.1%)
            send_without_block_not_optimized_method_type:      5,922 ( 0.0%)
                          ccall_with_frame_too_many_args:        961 ( 0.0%)
```

lobsters after:

```
Top-4 instructions with uncategorized fallback reason (100.0% of total 4,835,995):
             invokesuper: 3,039,692 (62.9%)
             invokeblock: 1,181,427 (24.4%)
             sendforward:   572,612 (11.8%)
  opt_send_without_block:    42,264 ( 0.9%)
Top-17 send fallback reasons (100.0% of total 33,316,645):
                          send_without_block_polymorphic: 12,847,879 (38.6%)
                                           uncategorized:  4,835,995 (14.5%)
                            one_or_more_complex_arg_pass:  4,502,767 (13.5%)
                          send_without_block_no_profiles:  2,663,578 ( 8.0%)
                          send_not_optimized_method_type:  2,381,743 ( 7.1%)
                                        send_no_profiles:  2,206,481 ( 6.6%)
                                     send_cfunc_variadic:  1,391,775 ( 4.2%)
                  send_without_block_operands_not_fixnum:    747,228 ( 2.2%)
  send_without_block_not_optimized_method_type_optimized:    742,574 ( 2.2%)
                                        send_polymorphic:    467,750 ( 1.4%)
                          send_without_block_megamorphic:    428,364 ( 1.3%)
                 send_without_block_direct_too_many_args:     33,097 ( 0.1%)
                 send_without_block_cfunc_array_variadic:     22,255 ( 0.1%)
                                obj_to_string_not_string:     19,440 ( 0.1%)
                                        send_megamorphic:     17,153 ( 0.1%)
            send_without_block_not_optimized_method_type:      7,605 ( 0.0%)
                          ccall_with_frame_too_many_args:        961 ( 0.0%)
```
 * Correct JIT entry points for optionals so each optional start with nil
before their initialization routine runs. Establish
`jit_entry_points[filled_opts_num]` gives the appropriate entry point
 * Correct number of HIR block parameters for each JIT entry point
 * Entry points that share the same ISEQ PC get separate entries since
   they start with different state. No more deduplication.
 * Reject post parameters. Was hidden behind check for optionals.
 * Make sure to visit every BB in iseq_to_hir(). Some wasn't visited
   when the initialization routine for an optional terminates the block
   in a `SideExit`. Remove the now impossible `FailedOptionalArguments`.
These tests use NM threads but NT is not freed for MN thread, causing it
to be reported as memory leaks in LSAN. For example:

    #1 0x62ee7bc67e99 in calloc1 gc/default/default.c:1495:12
    #2 0x62ee7bc7ba00 in rb_gc_impl_calloc gc/default/default.c:8216:5
    #3 0x62ee7bc631d1 in ruby_xcalloc_body gc.c:5221:12
    #4 0x62ee7bc5cdbc in ruby_xcalloc gc.c:5215:34
    #5 0x62ee7bdea4c6 in native_thread_alloc thread_pthread.c:2187:35
    #6 0x62ee7bdec31b in native_thread_check_and_create_shared thread_pthread_mn.c:429:39
    #7 0x62ee7bdea484 in native_thread_create_shared thread_pthread_mn.c:531:12
    #8 0x62ee7bdea1da in native_thread_create thread_pthread.c:2403:16
    #9 0x62ee7bdde2eb in thread_create_core thread.c:884:11
    #10 0x62ee7bde4466 in thread_initialize thread.c:992:16
Make it easier to see what happens when one is changed.
@pull pull bot locked and limited conversation to collaborators Nov 15, 2025
@pull pull bot added the ⤵️ pull label Nov 15, 2025
@pull pull bot merged commit d7369f0 into turkdevops:master Nov 15, 2025
1 of 2 checks passed
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