The following is what's on my to-do list for the re-write of
decaf. Some of the elements on it entail much more work than others, but
I hope to get things done before Feb 28.
(1) implement Frame::generateFrame()
(2) implement JavaThread::generateJavaThread()
(3) implement Threadable (*1)
(4) implement the scheduler (*2)
(5) implement 'Operand' == java_word
(6) Figure out how to handle JavaClass resolution and
static initialization as transparently as possible.
Then implement it. (*3)
(7) Finally, the rewrite of interp.cc itself, which I've already
begun and will in large part be rather rote.
I've done about 6000 lines of code so far, with about half of
that being partially converted lines from interp.cc; this is the count
without the license text. This as compares to 15000 in the current decaf
source, with 4000 lines in interp and 1200 lines in c_pool.cc (with the
license text).
-_Quinn
(*1) -- should be an almost exact copy of the current threadable.
(*2) -- likewise, an almost exact copy of the current scheduler.
(*3) -- could take a long time; may have to end up with handles. Possibly
something nontransparent (e.g., you have to ask for resolution & static
init) but with the 'raw' (classfile) representation and the resolved,
initialized representation sharing a single (virtual) interface. For
example:
invoke_virtual(... JavaClass * jc ) {
jc = jc->resolve();
jc = jc->staticInitialize();
.
.
.
}
Where RawJavaClass's resolve() implementation does something
useful, and ResolvedJavaClass's resolve() method just returns 'this'.
Similarly for staticInitialize().
_______________________________________________
Kernel maillist - [EMAIL PROTECTED]
http://jos.org/mailman/listinfo/kernel