Skip to content

ZJIT: Specialize send with non-nil block arg #1014

Description

@k0kubun

On lobsters, send_block_arg_not_nil is a relatively frequent send fallback reason:

Top-20 send fallback reasons (100.0% of total 4,660,558):
                             invokeblock_not_specialized: 1,790,439 (38.4%)
                          send_without_block_polymorphic:   483,450 (10.4%)
                                  send_block_arg_not_nil:   423,375 ( 9.1%)
                            one_or_more_complex_arg_pass:   378,785 ( 8.1%)
                          send_without_block_megamorphic:   361,979 ( 7.8%)
                                        send_polymorphic:   296,717 ( 6.4%)
                          send_without_block_no_profiles:   222,684 ( 4.8%)
                             sendforward_not_specialized:   217,678 ( 4.7%)
                                           uncategorized:   118,770 ( 2.5%)

ruby#16621 implemented the nil block arg, but we should also handle non-nil block args.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions