JITs don’t need to reload code, they run the same code and tier it up to an optimized implementation when it gets hot. No execution context is lost, at least semantically.
I don’t know much about the internals of a JIT compiler, but wouldn’t it just (recursively) deoptimize the methods which include the inlined method and do a normal method call instead which will now go to the updated implementation?
Are you able to elaborate on this further?
1a. Does this mean the process gets restarted during reload?
1b. If no restart, how are active threads handled? What if a thread should no longer exist post-reload?