source: branches/generic-class-file/abcl/README.BRANCH @ 12767

Last change on this file since 12767 was 12767, checked in by ehuelsmann, 13 years ago

More work-in-progress. Add file mistakenly not committed with
WIP commit: it's the most important part.

File size: 1.7 KB
Line 
1
2This file describes the goals and current status of the
3branch it pertains to. In this case the generic-class-file branch.
4
5
6Goal(s)
7=======
8
9The goal of the branch is to replace the existing class file writer which
10is restricted to writing 2 methods in a class file with an extremely
11restricted set of signatures.
12
13The new writer will allow any number of methods with no limitation on the
14signatures to be used. This allows a number of things impossible today:
15
16 1. Eliminating the external dependency of 'runtime-class.lisp' on ASM
17 2. Moving initialization of 'final static' fields to the '<clinit>'
18      to make 100% sure they get initialized exactly once
19 3. Using the Java-paradigm of having multiple methods with different
20      numbers of parameters to fill in default values
21
22--------------- example to go with item (3)
23final public LispObject execute() {
24  return execute(<default value>);
25}
26
27final public LispObject execute(LispObject arg1) {
28  return execute(arg1, <default value>);
29}
30
31final public LispObject execute(LispObject arg1, LispObject arg2) {
32  ...  do actual work ...;
33}
34--------------- end of example
35
36
37
38Design
39======
40
41
42
43
44Status
45======
46
47The replacement code is located in the java-class-file.lisp file.
48
49TODO:
50
51 * All methods preceded by an exclamation mark have equal names in
52   compiler-pass2; this situation is to be resolved eventually.
53   Preferrably even before merging back to trunk.
54
55 * Move 'code-bytes' to opcodes.lisp
56
57 * Rename opcodes.lisp to jvm-opcodes.lisp [probably more an action for trunk/]
58
59 * Writing unit-tests
60
61 * Write compiler-pass2.lisp to use WITH-CODE-TO-METHOD to select the
62   method to send output to
63
64 *
65
66
67The rest of the status is still to be described.
68
Note: See TracBrowser for help on using the repository browser.