Mark,
consider pure code container JVM classes, each one of them holding only
a large bunch (say 16K) of static methods, all with synthetic names and
the same signature (i.e., number of arguments in case of ST). Initially,
the methods are just pre-allocated empty placeholders. As ST methods are
added, removed or modified, these container classes are transformed at
runtime (and later stored as files) by means of java.lang.instrument.
For example, adding a new ST method means transforming one of the empty
methods as to contain the appropriate bytecode. As soon as one container
class becomes full, i.e., when each method contains non-trivial code,
another container class with another large bunch of empty static methods
is created.
The ST runtime, of course, needs to keep track of the mapping between
the ST methods and the JVM methods. Note that there's no one-to-one
mapping between ST classes and these container classes. Methods of one
ST class are dispersed between different container classes, probably
even if they bear the same signatures.
This way the number of container classes is drastically reduced but,
alas, more bookkeeping is required.
Regards
Raffaello
On 2014-08-18 21:36, Mark Roos wrote:
Hi John
Just to keep my use case visible. For my use I convert each Smalltalk
method to a
Java class ( inheriting from Object ) which only includes static
methods. Due to
how I handle blocks there is often more than one method in each class.
I do invoke
static methods from my support classes.
I use the single class loader plus constant method handles as Remi
mentioned
which works well. My only concern is the speed of creating a class.
I suspect
that the standard class loader performs some security and validity
checking which
the unsafe one does not. GC is not critical except during development
as code
is rarely replaced on the fly.
So my only request might be for a very lightweight class and loader
perhaps handled
via an annotation which just holds methods ( or maybe just an array of
methods )
regards
mark
_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev