At 5:36 PM +0100 2/8/03, Leopold Toetsch wrote:
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.
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 :)

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

Reply via email to