You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I did this with the previous JIT code, and it improved performance considerably. The main gotchya's here are that some x64 instructions require specific registers, before we perform any KC calls, we must flush our local register cache to the CoreRegs* structure, this is because any KC could access or modify this variables, and additionally might switch Core's entirely, invalidating any of the shared cache without it having been flushed. In addition to this, any branches (into or outside of JIT) and any JIT fallback calls also must flush our local cache. It's worth mentioning as well that we will need to be cautious about where we allow interrupts to occur as well, since these will also force us to flush the cache.
As an aside, in the future when we want to do cross-block optimizations, especially surrounding JIT allocation.
Just a basic LRU thingy will do, currently we just move to/from memory and use fixed registers.
The text was updated successfully, but these errors were encountered: