Some of you know that I have been working on writing a new class file generator. The new class file generator will be replacing the current version which is strictly written for the current compiler. Due to some of the limitations in the class file generator, I'm not even able to change some patterns I'd like to change in it.
The new class file generator will allow much more general class file content. It's the explicit intent to support any method type and argument pattern. This goal will allow us to rewrite runtime-class to use our own class writer.
The other purpose is to be able to generate more than two methods in a class file: currently we only support 2 (<init> and one of 8 execute(...) methods). I'd like to be able to have many more; for example I want to move initialization of 'final static' fields to <clinit> to make 100% sure they are only initialized once. But that's just one purpose. Another would be to support multiple &optional parameters (but less than 8) without a need to call fastProcessArgs(), but do it in a much more Java-like fashion by generating multiple execute(...) methods. Each method calls the one with more parameters, until all optionals (which were not provided) have been filled, like this;
public LispObject execute() { return execute(default1); }
public LispObject execute(LispObject arg1) { return execute(arg1, default2); }
public LispObject execute(LispObject arg1, LispObject arg2) { .... do actual processing ...; }
I'm creating a README on the branch to say the same, for anybody who comes along but did not read this e-mail.
Bye,
Erik.
armedbear-devel@common-lisp.net