[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: cells

    From: Jonathan A Rees <JAR@AI.AI.MIT.EDU>

    ... If you did this [added locatives] to Scheme I think you'd have
    quite a different language, different enough that it would require
    significant changes to implementation strategies.

Well, I don't know.  Even though I'm not a big fan of locatives we
included them in our implementation of Oaklisp and I'm not sure if they
haired things up at all when you take the final tally.  We used two low
tag bits and allocated #b10 for locatives, so they were immediates.
Data representation wasn't any hairier to speak of, but the presence of
"raw cells" did make the gc code about 3 times as long as it would
otherwise have been, and maybe 20% slower.

It's hard to say whether they were a net win, but they certainly weren't
a big complication.  If "computer science" really deserved its name I
guess I'd reimplement Oaklisp again without them and find out.  They do
let vectors and structures (including environments) get gc'ed when all
that's left is a pointer to something in their innards, which is nice,
and they did simplify the internals considerably, especially
representing environments and closing over instance variables and
dealing with globals and low level stuff like that.