[armedbear-devel] Some thoughts on classloaders, ...

Don Cohen don-sourceforge-xxz at isis.cs3-inc.com
Tue Sep 22 08:28:09 UTC 2009

Alessio Stalla writes:
 > The point is that classloaders already work like this! When
 > classloader X loads a class, and that class refers to class C, X is
 > asked by the JVM to load C as well. In abcl we are not using this
 > feature, rather we use an ad-hoc loading model that needs temporary
 > files. I propose to replace that completely and adopt the JVM way.
Ok, I think I finally understand all you said initially.
I'm sorry to have put you to so much trouble explaining it.
I hope a few others will benefit from this explanation.

 > ... However note that your example will probably be
 > compiled by abcl into a call like G.getSymbolFunction().execute(x)
Ok, that's a reasonable escape hatch.
 > i.e. G will not be resolved to a class at compile time (else how would
 > you handle redefinition?). However, what I'm talking about is (compile
 > 'f (lambda (x) (flet ((g (k) k)) (g x)))) - here g is known at compile
 > time, and compiled to its own class.
(I understood that.  The question above was a new one that arose in my
mind from what you had been describing.)

 > What I propose is this: suppose f is compiled to a class named foo41
 > and g to foo42, then in one of foo41's methods you'll have code like
 > LispObject g = new foo42(). When loading foo41 we'll use our
 > abcl-specific classloader which knows how to resolve foo42 too
 > (because it knows where to read it from memory or from the file
 > system, depending on the type of compilation), and everything
 > magically works (I hope :)
Sounds plausible but I can see why you say you hope.  Good luck.
And thanks for your patience.

More information about the armedbear-devel mailing list