Merged requested to merge branch/jit-releaseall into branch/default
pypyjit.releaseall() is a helper that marks all current machine code objects as ready to release. They will be released at the next GC (unless they are currently in use in the stack of one of the threads). Doing
pypyjit.releaseall(); gc.collect() is a heavy hammer that forces the JIT roughly to the state of a newly started PyPy. It might be useful in some cases where our GC strategy is not good enough, e.g. if there is an ever-growing number of bridges out of the same loop, which can occur e.g. if the loop is in stable code but contains inline bridges that depend on code or classes that keep being (re-)created.