Taurus JavaVM Project Diary
This page gives a short history of the the virtual machine project:
This page badly needs updating!
21st May 2000
Finally aquired an S5, and an S5 alpha tester (Matt Kasdorf) and started to
test on a real S5. The bad news is that real S5s aren't like the emulator!
Using stderr (as fd 2) seems to cause a KERN-EXEC 3, which is not good. Also
an absence of re-direct in the shell has hindered progress. We can however
print "Hello World", but only if we use my cut down runtime classes.
18th December 1999
Ported dhrystones to Java so that I can benchmark the VM. We are approx.
1/10th the speed of the Symantec VM, which considering the unoptimised code
is pretty good.
4th December 1999
The libraries shipped with the EPOC32 SDK do not support long (64-bit)
arithmetic. These are dummied (with appropriate debug) to 32-bit routines.
These are actually part of the compiler support libraries, not the EPOC OS.
After a few changes to the filename generation code, we can finally run
"Hello World" under the emulator. As I am lacking a real S5, I can't
28th November 1999
Started work on Psion Series 5 port, having finally got hold of the EPOC32 SDK.
Lots of compile errors - this could take a while.
27th November 1999
Ported VM to Cygwin32 to aid testing builds destined for Linux. Need to read
the copyright carefully to see what the restrictions are on making the binaries
available. Have also started putting some work into a proper test suite to
verify the VM. We now have a formal bug list too!
28th October 1999
Ported the VM to Linux-i386 for fun. Am getting into Linux and the port was
incredibly easy. This port is being made available, and it uses the full 1.02
21st October 1999
SIBO port is looking good. Have solved a lot of problems with running as an
installable application and have some basic graphics support throught the
Taurus OPL Library. Have also done some tricks to reduce memory usage.
13th September 1999
Work had been getting in the way of development, but I have finally got back to
doing some more on the SIBO port. Progressing well with the port running over
60% of it's intended instruction set. Have come up with a few bits of cunning
which improve the VM overall and allow SIBO to support the class type
checking (NT4 used string libraries heavily). The SIBO version can now run
the proper java.lang.String and StringBuffer classes and merily concatenates
strings. Classes seem to occupy a lot of memory though - my simple test program
needs 40K of working memory to run!
8th May 1999
Ported the linker code and can now load and run several classfiles. After much
poking around writing a SIBO string library, we can now link enough together to
execute a real
System.out.println(). Don't laugh, this involves
initialising static fields, creating objects and coping with virtual methods!
Am so pleased with progress that I have decided to make this version (0.10)
available as a download.
26th April 1999
SIBO port is progressing well. It ran its first program a few days ago and I seem
to be finding some time to get some work done on it. We are limited to loading a
single class file at the moment - no linker yet! BCC is holding up well, and thanks
to Robert de Bath, I can build SIBO img's. libc didn't fair so well in the end, so
I am doing without it and using EPOC directly. Am building up slowly, but memory
is already starting to get tight. I have a couple of plans to reduce memory
consumption: i) run class files directly from disk; ii) reduce error messages to
numbers (it's amazing how much space string constants take up). As yet I have no
idea whether these will work...
24th March 1999
Have started work on getting the VM ported to SIBO. The first thing this will require
is a C compiler, which seems rather hard to get hold of. Have adopted the Psion-c
compiler, bcc, and am currently making good progress to get it running under NT4. A
few problems with libc.a are holding back development.
27th January 1999
Have been rather busy travelling for my day job, so progress has slowed. Managed to put
some effort into starting a test suite, which showed up a few memory errors when doing
complex string handling. Have managed to fix most of these.
28th October 1998
Found a bug in the native implementation of java.lang.Object.newInstance() - we fail to
call the default constructor on the newly created object! This has been resulting in a
NullPointerException when loading LocaleElements_en.class.
8th October 1998
Fixed one or two minor bugs in the virtual instructions - mainly the most recently added stuff
for performing long shifts.
17th August 1998
Did some major implementation of instructions, native methods and exceptions in order
to support 'javac'. Amazing progress now means that 'javac' runs, but a logic error
somewhere means we generate errors for legitimate code!!! :-(
28th July 1998
Major strategy rethink for the disassembler - we now use table which is common to both
the command line VM and the graphical debugger - consistency at last...
12th April 1998
Yeehah! We can now print "Hello World!". You wouldn't beleive the number of classes
it takes. We're still running with my modified java classes, we die most horribly with
the JDK originals. I'm now working my way up to using the full JDK classes.zip.
9th March 1998
Debugger shaping up nicely. Split out the native IO functions so that we can write to
either stdout or to the output pane of the debugger.
27th February 1998
Early days. We now have a class loader which works and the engine and native interface
are beginning to take shape. Can't execute very much though.