ruby#18180 specializes foo(&proc) into SendDirect with BlockHandler::BlockArgProc, but the inliner skips these calls.
To support them, PushInlineFrame needs to write the proc as the inlined frame's specval (for yield / block_given?), and defined?(yield) folding needs to treat the Proc as a present block (it currently checks only blockiseq).
ruby#18180 (comment)
ruby#18180 specializes
foo(&proc)intoSendDirectwithBlockHandler::BlockArgProc, but the inliner skips these calls.To support them,
PushInlineFrameneeds to write the proc as the inlined frame's specval (foryield/block_given?), anddefined?(yield)folding needs to treat the Proc as a present block (it currently checks onlyblockiseq).ruby#18180 (comment)