[Win32] VM update (3.2 release candidate)

Andreas Raab Andreas.Raab at gmx.de
Mon May 6 22:57:57 UTC 2002


John,

> Note my benchmarks used a hand coded sqGnu.h and tampering with 
> interp.c so I could really what was happening.
> 
> So without any changes your assemble should look like so.

Okay, this is clearly a problem with currentBytecode not being in a
register. It seems that by default it's not in a register (which it
_really_ should since it makes a heck of a difference; I can only assume
that Ian's sqGnu.h doesn't define CB_REG for some reason) and somehow
your changes must have caused GCC to "get it right" by assigning it a
global register.


> >The only difference to the current code is that rather than using
> >"fum+80" it's using _receiver explicitly. No big difference 
> >(although I would expect the immediate global access to be faster).
> 
> Well that gets into what happens when you bench the VM.
> 
> The real way to find out is to build a new interp.c, or I'll send you 
> one with global structures on?

Na, thanks. Not enough interest at this point. BTW, I would guess that
any difference in speed is more likely to be due to a different layout
of the variables (e.g., certain heavily used globals falling into the
same cache lines etc). I thought about this issue before - unfortunately
it's hard to measure the "average rate" of accessing the globals in
interp.c.

Cheers,
  - Andreas






More information about the Squeak-dev mailing list