We support multiple different kinds of call types, and they may place locals in different ways, which require different arithmetics on the number of parameters. They live in different places of the codebase, not unified.
We could have a single struct that wraps the metadata of a caller and a callee, which gives you metadata you need for specializing different method calls or preparing to return from function stubs to the interpreter.
Discussions: ruby#18606 (review), ruby#18606 (comment)
We support multiple different kinds of call types, and they may place locals in different ways, which require different arithmetics on the number of parameters. They live in different places of the codebase, not unified.
We could have a single struct that wraps the metadata of a caller and a callee, which gives you metadata you need for specializing different method calls or preparing to return from function stubs to the interpreter.
Discussions: ruby#18606 (review), ruby#18606 (comment)