History

Added TODO draft

Dmitry Kabak (userdima committed 13 years ago

Commit 4857ddd1 parent 54574481 file · +53 −0Browse files

Unified · Split

TODO+53−0
@@ -0,0 +1,53 @@
1+This project is intended to run Java 7 apps natively in inferno,
2+by converting class files to dis and linking them at runtime.
3+
4+Currently working features:
5+ - not many of them really, see problem list below
6+ - although jvm runtime loader and linker is supposed to
7+ work with java 1.4 classes (there was no chance to get
8+ those sources, as java released only 1.5 ones and later)
9+ sources are needed to provide native part of the JCL
10+
11+TODO:
12+ - reworkd j2d to support modern exception handling in dis
13+ - implement support for new bytecode instructions:
14+ - DONE - ldc, ldc2, ldcw_2, ldc2_w: those will accept
15+ more argument types, see http://docs.oracle.com/
16+ javase/specs/jvms/se7/html/jvms-4.html#jvms-4.10.1.9.ldc
17+ since class file version 49.0
18+ - invokedynamic, completely new since 49.0
19+ - prepare the pkg dir that would contain all the JCL classes
20+ from the OpenJDK (as they come with GPL license), compiled and
21+ translated into dis
22+ - implement proper makefiles to compile JCL and native classes
23+ - more to come later...
24+
25+Current tasks:
26+ - correct exception handling in dis code
27+ - just translate the addresses and write them directly
28+ to dis 'handlers' section at the end
29+ - support for new const types (CONSTANT_MethodHandle,
30+ CONSTANT_MethodType, CONSTANT_InvokeDynamic):
31+ -DONE- internal structures (java.m)
32+ -DONE- loading from class files (loader.b)
33+ - verification (loader.b)
34+ - debug output (loader.b)
35+ - support for new instruction behaviuor
36+ - DONE - ldc, ldc_w (new argument types):
37+ - DONE - loading and verification (javadas.b)
38+ - DONE - simulation (simjvm.b)
39+ - DONE - translation (xlate.b)
40+ - DONE - runtime support (classloader.b) - NOT COMPLETELY TESTED
41+ - note: the ldc since 50.0 supports Class refs loading for
42+ classes, so we need a way to obtain that class from the loader
43+ and push it to the stack
44+ - invokedynamic
45+ - loading from class files
46+ - verification
47+ - translation
48+ - runtime support (?)
49+
50+Unimplemented or not fully implemented native classes:
51+ - java/lang/Class - some reflection functions
52+ - sun/misc/Unsafe - currently completely unimplemented
53+ -