[ANN] Exupery 0.03, most bytecodes are now covered.

Bryce Kampjes bryce at kampjes.demon.co.uk
Fri Apr 9 12:42:24 UTC 2004


This release compiles most bytecodes except the block bytecode,
extended bytecodes, and duplicate top of stack bytecodes.

The major limitation is the code cache only supports a single compiled
method. 0.04 will be able to compile multiple methods. Practical use
will have to wait for at least 0.04.

Compiling the bytecode benchmark provides a nice but not impressive
speedup.  I get '429890848 bytecodes/sec; 4427861 sends/sec' when
evaluating the expression below. A stock 3.4-2 VM gets '145454545
bytecodes/sec; 5060412 sends/sec'. This is not like for like, because
it's comparing the latest from CVS with a 3.4 VM. However, I haven't
verified that my VMs are gnuified so 3.4-2 is the best stock VM I
have.

	"Compile Integer>>benchmark"
	method := Integer compiledMethodAt: #benchmark.
	bytes := ByteCodeCompiler 
				compileMethod: method.
	"Load the compiled method into the code cache"
	code := MachineX86 new loadCode: bytes.
	MachineX86 new
		register: code
		inMethod: targetMethod
		forClass: aClass
		method: method.
	#benchmark flushCache.
	
	"Run the benchmark"
	0 tinyBenchmarks

To use Exupery you will need to compile a custom VM. Install VMMaker
before trying to load Exupery. I've only tested it on Linux with an
x86 CPU. Porting to Windows is probably trivial, porting to another
CPU architecture would be a lot more effort.

I've developed it with Monticello, OSProcess, the RefactoringBrowser,
the TestBrowser, and VMMaker installed. If there are any dependency
problems then try loading them.

Enjoy, but don't expect this release to do anything useful. It does
just enough to be interesting to play with. (The horrid interface
above will be improved before it's useful.)

Bryce



More information about the Squeak-dev mailing list