Join GitHub today
This is beginnings of a callsite-based profiler. It is enabled with --ir.profiler. You can try to enable it but it stlll is a work in progress. The main changes to notice:
Additional high level design goals. Be as incremental as possible. Original profiling work has a global profiler but this is just simple counter on special callsite type. We can later have callsites coordinate with a global profiler. Only normal calls are supported but in same spirit we can easily add FCALLS. Not all method targets are allowed. Some of these will be able to be incrementally supported later....
An experiment on the experiment is that native implementations can be replaced by pure-ruby versions so we can still inline in common core APIs which accept blocks.