New VM in progress

Anthony Hannan ajh18 at cornell.edu
Mon Dec 10 15:06:00 UTC 2001


Hello all, thanks for all the interest in block closures.  I will
officially release my work by the new year.  I hope this is soon enough
(Stephan).  I would get it out sooner but I need to work on a small
project for a client right now.

Benchmark results:
My 0 tinyBenchmarks is about 22% faster for sends/sec, but about 3%
slower for bytecodes/sec.  The bytecodes slow down maybe because my
temps are 5 slots away from the intermediate stack values on each frame
(because I put context info (method, current ip, etc) between them) and
this may not utilize the cpu cache as effectively.  I'm in the process
of moving the context info to just after the args but before the extra
temps, hopefully this will give me that 3% back which should yield even
a bigger percentage gain for sends/sec.  Also, in the interpret() method
I designate an additional register, localFP, which replaces
localHomeContext, which wasn't designated as a register.  With localSP,
localIP, and currentBytecode this totals 4 registers variables, but I
bet the compiler (gcc) doesn't make them all registers especially on my
Intel (Linux).  Or it probably ignores them with -O2 optimization
anyway.

New CompiledMethod format:
I did consult Tim's web page about new CompiledMethod format early on
and as a result included it in my new CompiledMethods.  CompiledMethod
is now a regular pointer object with 3 inst vars (header, bytecodes,
trailer) and indexable fields for literals.  bytecodes points to a
ByteArray.  And trailer points to a ByteArray encoding the source
pointer as before, but this can easily be renamed and changed to
something more readable.

Method cache:
I have not included Scott's method cache enhancement yet, but I will.

Cheers,
Anthony

P.S. Stephan, I have only gotten the IntepreterSimulator to work on
shrunken MVC images and with a few InterpreterSimulator patches that I
will post later this afternoon.  I've got to run now.




More information about the Squeak-dev mailing list