We also use the direct class for inline caches, so we want to use this consistently. This also makes it easier to improve check_serial so the JIT can create a better version of that. Another advantage is that this makes it easier to create direct jumps to specialized functions in the JIT.
This changes the JIT so we don't inline methods that aren't often called, allowing for more room in JIT'ted code for methods that are often called. It also changes to keep track of compiling explicitly instead of (ab)using the call_count for that. Resetting the call count had other effects such as disabling that method for future jitting that has adverse effects. On my system this shaves off around 1 - 2 seconds of a CI run.