VI4 (was: RE: [ANN]Draft rough plan for 3.6!)

Anthony Hannan ajh18 at cornell.edu
Tue Apr 15 16:19:46 UTC 2003


I ran macrobenchmarks (after fixing it up, see my fixes posted).  The
results are:

3.4 image with closure compiler loaded and active but no methods
recompiled:
	#(67308 246197 116342 31254 0 16290 14740)
3.4 image with closure compiler active and all method recompiled under
closure compiler:
	#(85788 348667 124072 46906 0 18674 23292)

Since marcroBenchmarks mostly tests the compiler/decompiler and
messageTally (hence contexts), most of these test are not executing
exactly the same code from the first image to the second.  The only test
that doesn't change is number 6, the one that opens and closes 10
browsers.  Number 6 results are 18674 vs. 16290, a 15% slow down.

Let me clarify why I think we should wait for a Jitter before changing
the image format.  Because the Jitter itself will likely required a
image format change and we don't want two format changes in a row,
especially when the second will superscede the first.  Only the compiled
method format change would remain from the first change, which could
wait for the second because it is only an aesthetic change.  It adds no
new functionality.

I know past Jitters did not require a format change.  But since Ian is
on Eliot's Bytecode-to-Bytecode Adaptive Optimization for Smalltalk
project (along with myself, Dan, Marcus, and John Sarkela) I suspect the
next Jitter will be a Smalltalk Jitter producing optimized bytecodes. 
Some of these bytecodes will be new special low-level bytecodes, which
will require a new image format.  Even if Ian produces a C Jitter before
that with no format change, it will speed things up enough to not need
VI4.  Only the compiled method format change will be missing, which
again is not important.

So I believe we can live with the 15% slow down for a year or so.  If
not we can try to speed up the interpreter a little by just including
stack enhancements but not bytecodes enhancements so we don't change the
image format.  I think any bytecode changes should be in conjunction
with Eliot's project or some Jitter project.  And to reiterate, I think
the compiled method format change should only be include on the back of
some other more significant image format change like bytecodes.

Cheers,
Anthony



More information about the Squeak-dev mailing list