#240: FIND-CLASS does not implement 3-argument behavior -----------------------+---------------------------------------------------- Reporter: rschlatte | Owner: somebody Type: defect | Status: new Priority: minor | Milestone: Component: CLOS | Version: Keywords: | -----------------------+---------------------------------------------------- Currently find-class does not use a supplied third (environment) parameter. (LispClass.java line 331 has a FIXME to that effect.) This blocks the fix for #239 since classes cannot be inspected at compile-time.
#240: FIND-CLASS does not implement 3-argument behavior -----------------------+---------------------------------------------------- Reporter: rschlatte | Owner: ehuelsmann Type: defect | Status: assigned Priority: minor | Milestone: Component: CLOS | Version: Keywords: | -----------------------+---------------------------------------------------- Changes (by ehuelsmann):
* owner: somebody => ehuelsmann * status: new => assigned
Comment:
I promised to take this one.
Documenting my planned approach so anybody can pick it if they find time before I do.
The plan is to add a new field to the Environment java class. The field will contain a hash map just as the "live" class hash map does. Each new environment created from a "root" environment copies the pointer to the hash map.
The three argument find-class and %set-find-class cases set the class in that hash map instead of the global one.
As soon as the environment disappears the classes pointed to can be garbage collected, if their super classes don't contain pointers to them.
#240: FIND-CLASS does not implement 3-argument behavior -----------------------+---------------------------------------------------- Reporter: rschlatte | Owner: ehuelsmann Type: defect | Status: assigned Priority: major | Milestone: 1.2.0 Component: CLOS | Version: Keywords: | -----------------------+---------------------------------------------------- Changes (by mevenson):
* priority: minor => major * milestone: => 1.2.0
armedbear-ticket@common-lisp.net