Topic |
Status |
Implement the 'long' data type |
done Alpha4 |
Implement the missing JVM opcodes. |
mainly done Alpha4, done Alpha8 |
Optimize array initializations.
If we were able to detect that a given JVM code sequence
does an array initialization, we could find a compact 68K
assembly translation. |
no idea yet |
Implement exception handling. |
not yet quite stable in Alpha4, done
Alpha8 |
Intelligent decision whether a
given '?astore' instruction is needed in the program's
context. |
no idea yet |
Implement a translation from Java names to assembly
labels usable in native code. |
done Alpha2 |
Find a clean way to declare that the fields of a
class resemble a given native structure. Some of the
'palmos' classes must have the same field layout as
PalmOS data structures, their fields MUST NOT be
rearranged or optimized away. |
done Alpha5, cleanup in Alpha8 |
Allow code sizes beyond 32K
(what is the maximum limit possible with PalmOS?). |
idea: more code
resources, far-jumps via data segment |
Make optimization options
user-selectable. |
prepared |
Implement interface method calls. |
done Alpha5, works in Alpha8 |
Optimize JVM stack operations
by keeping top entries in registers. By now, Jump does a
lot of unnecessary 68K stack moves. Using registers
instead should save valuable CPU time. |
should be done |
Omit exception checks if code
analysis proves that the exception can't be thrown. |
should be done |
Make the '?aload' and '?astore' implementations
exception-safe. |
done Alpha8 |
Check for correct ordering of
the <clinit> methods. |
must be done |
Improved storage concept for constant Strings. |
done Alpha6 |
New memory management with
improved performance and a gc no longer irritating POSE. |
must be done |
Introduce threads. |
never, I think |
Bug in constant strings. |
reported for Alpha6, fixed in
Alpha7 |
Bug in static fields giving
invalid "SOF-1(a5)" addressing mode. |
done Alpha8 |
Don't call methods consisting
of just a single 'return' instruction (implications on
inheritance?). |
should be done |
Don't include <clinit>
methods just calling a registerNatives() method (or any
empty native method). |
should be done |
Include the method name strings
only if explicitly asked for ("debug" option). |
should be done |
Make the exception handling use
Itables for the 'catch' decision. |
should be done |
Introduce distinction between
Jump's compile-time JVM and the target-run-time Java
classes (i.e. TARGET_CLASSPATH variable). Is it possible
to use the target-run-time classes for javac compilation,
too? |
should be done (if possible) |
Show more information when an
uncaught exception arises. |
should be done |
Change the exception handler:
use tables for subclass-checking as in the 'instanceof'
opcode. |
should be done. |
Topic |
Status |
Fix the broken native-palmos.asm file. |
done Alpha3 |
Include the makevoidptr subroutine. |
done Alpha3 |
Correctly handle PalmOS traps that return booleans. |
done Alpha7, Alpha8 |
Introduce overloaded methods with byte[] instead of
int for traps like MemMove().
Instead of overloading with byte[], I used
java.lang.Object. So, you can pass any type, not only
byte arrays - BUT BE VERY CAREFUL, I'd recommend sticking
to arrays! |
done Alpha8 |
Bring palmos package up-to-date
for PalmOS 3.x. |
should be done (help from
Noli?) |
Include usable version of
tools.MkApi and palmos.api in distribution. |
included in Alpha8, but still
needs some work... |