Jump2 Development Notes

Collected ideas, suggestions and problem reports

24-Nov-2000 by Ralf Kleberhoff for Jump 2.0 Alpha 8


Core system

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.

Java classes

Topic Status
Concept for System.in, System.out, System.err really necessary?
Native Integer-to-String conversion done Alpha6
More compact conversion routines between Strings and floats / doubles. The Java methods in class FloatingDecimal are LENGTHY! should be done
Make Jump compatible with JDK 1.3 (and 1.1?) should be done

PalmOS interface

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

Miscellaneous

Topic Status
Add example programs to the distribution. done Alpha4
Add Noli's MenuProgram to the distribution. done Alpha8
Write an example using bitmaps. to be done

Extensions

Topic Status
WabaJump classes to allow porting from Waba to Jump. work in progress by Rob and Peter