At 5:36 PM +0100 2/8/03, Leopold Toetsch wrote:
Yup. This was a decision made a long time ago, back when Daniel started the first JIT stuff. It got a big speedup, and was deemed to be worth it, since the regular runloop was still darned fast. (And that was before everyone got it going insanely fast :)Jason Gloudon wrote:On Fri, Feb 07, 2003 at 05:49:35PM +0100, Leopold Toetsch wrote:I don't know yet, how multi threading will be done. But when multiple interpreters share the ->code data member (as newinterp/runinterp) do, then they will use the same JIT/prederef or whatever data.
You can't do that for prederef in a multi-threaded process because prederef stores the address of the registers in the interpreter structure in the prederef data.Ouch, yes. So does JIT. So JIT/prederefed code must be separated for threads.
It's one of the reasons I haven't been too worried about speeding up the core loop. I've been figuring we'll end up with three:
*) JIT
*) CGoto
*) Old indirect dispatch
and leave it at that. When Gregor was working on the prederef I figured we'd use it as the third, since the JIT was new and I wasn't sure it'd be possible to get it as a good general solution, but it's developed so much that I'm not sure it's worth more loop development. (I could, of course, be wrong... :)
--
Dan
--------------------------------------"it's like this"-------------------
Dan Sugalski even samurai
[EMAIL PROTECTED] have teddy bears and even
teddy bears get drunk