Dolphin's JIT is incredibly fast; the time spent in it is hard to measure with typical profiling tools because it's basically a rounding error. If you were using a vastly more heavyweight compiler, maybe it could be an issue?
A tracing JIT definitely sounds like an interesting idea, but on a system that can arbitrarily swap out code in memory, the question of "what do I do to a trace when part of it gets invalidated" could be difficult. Plus, code size is already a big problem, and tracing JITs are known for that.
It's not impossible though; I do really like the idea of tracing as an approach. The first tracing JIT ever was actually for emulation/recompilation, not for compiling an existing language, despite the commonness of tracing JITs in Javascript and such today.
A tracing JIT definitely sounds like an interesting idea, but on a system that can arbitrarily swap out code in memory, the question of "what do I do to a trace when part of it gets invalidated" could be difficult. Plus, code size is already a big problem, and tracing JITs are known for that.
It's not impossible though; I do really like the idea of tracing as an approach. The first tracing JIT ever was actually for emulation/recompilation, not for compiling an existing language, despite the commonness of tracing JITs in Javascript and such today.
