This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GSOC | Extending Common Lisp support


On 06/27/2012 05:48 AM, Charles Turner wrote:
I think the file is much easier to read now. A lot of package code
relied on adding things into the symbol table, but with this patch,
calls to AbstractHashTable#add which collide want to call setValue on
SymbolRef. It's not clear to me how to do that, and I note you've
thrown an UnsupportedException in such cases. Any pointers how to
proceed?

Which is the case where we need to do add->setValue?


We can certainly special-case SymbolRef#setValue for the case it's a
no-op:

    public Symbol setValue(Symbol value) {
        if (value != getValue())
            throw new UnsupportedOperationException();
    }

But changing the "value" doesn't make sense.

I forgot about one problem: When the Symbol in a SymbolRef becomes
unreferences, we have to "garbage collect" the SymbolRef. (As is
currently done in lookupInternal.)  I'm looking into fixing this
by overriding getNode.
--
	--Per Bothner
per@bothner.com   http://per.bothner.com/



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]