forked from kaffe/kaffe
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTODO
More file actions
77 lines (69 loc) · 3.68 KB
/
TODO
File metadata and controls
77 lines (69 loc) · 3.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
* Engine changes:
* Merge in JIT4
* Merge in vmgenned interpreter from Cacao
* JIT must support thread concurrency.
Variable must be in thread local storage and not globally visible.
* Add support for gcj-ed code with BC ABI.
* Merge in Tom Tromey's libjit and llvm based JITs.
* libjit targets x86, x86_84, ARM, Alpha
* llvm has jit targets for X86, X86-64, PowerPC and PowerPC-64
* gnu lightning targets x86, PowerPC32, AMD64, Sparc32
* tinycc targets linux-arm, linux-x86, win32-x86 and c67
* We could use libjit & try to fiddle in llvm, and the rest into it as backends.
* libjit could use a vmgenned interpreter, too.
* Cleanup
* Remove kaffe's copies of jni.h, jni-md.h, kaffe-jni.h etc. Use GNU Classpath's headers
instead.
- Implement KaffeVM_Arguments as JDK1_1InitArgs, or do without them
- Implement GetObjectRefType
- Symlink jni.h, jawt.h, etc. from classpath's installation on install.
* cleanup JNI library loading to use libltdl exclusively.
* Remove unused instructions from jits (nop, unimplemented)
* Use CScout http://www.spinellis.gr/cscout/doc/indexw.html to weed out unused symbols.
* Architectural changes:
* Make threading model runtime selectable.
* Make runtime engine runtime selectable
* Make gc backend runtime selectable
* Make boehm-gc the default engine on platforms that support it
* Swich to glib for data structures, command line option parsing, etc.
* debug logging (alternative would be GNU nana)
* command line option parsing (our manual code in main.c is rather ugly)
* data structures (no need to have our own hashtable, lists, etc.)
* fixed size types (without requiring c99, allowing to simplify gtypes, etc.)
* atomic functions (which we're now copying and pasting from gnu libc,
and Guilhem is no longer around to maintain them)
* string & utf8 utility functions (allowing us to throw away the implementation in kaffe)
* timers & counters (making the stats module leaner)
* and various little portability/utility functions
* Switch to libjclassinfo for class file parsing
* Switch to libzzlib for zip file reading first to be able to kill the syscall
interface in the threading code.
* findInJar is a bit trickier, as it also deals with directories, regular classes
etc. Maybe it can be largely rewritten in Java in the VMClassLoader?
Alternatively, use zziplib's transparent file access to access class files,
directories and zip files.
* Missing features
* Implement support for extension override mechanism, and allow overriding
with older versions of APIs as well, which is needed for DOM.
* Implement hooks for annotations from GNU Classpath.
* Implement hooks for JMX from GNU Classpath.
* Implement hooks for JVMTI from GNU Classpath.
* Integration issues
* Remove jikes from checked compiler list. Otoh, it's the only real option on Cygwin atm.
So the answer is probably to avoid having any 1.5+ Java code in vmreference, and to avoid
any deviation from Classpath's VM interface.
* Update java.lang.ref vminterface to latest version.
* Switch over to GNU Classpath's javah and remove kaffeh
* Replace native library code using KNI with code using JNI
* Merging work:
* verifier from gcj (rob gonzalez)
* SkyOS port
* Build system: (dalibor)
* Remove convenience libraries (gc, engine, threading) and make them part of libkaffe_la_SOURCES
* Remove symlinked files, and replace them by adding the 'right' file to SOURCES
* make sure all noinst_HEADERS are part of _SOURCES.
* Use AS_IF and AS_CASE all over the configure script.
* Non-recursive build, single Makefile.am for kaffe.
* Switch to autotest for the test suites
* Pending patches
amd64 jit from Eric Anholt (guilhem)