[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
|