Jan Vroonhof writes:
Kyle Jones <kyle_jones(a)wonderworks.com> writes:
> As Olivier mentioned, the pages should be sharable so ong as
> we don't write to them. But this means that we can't run the
> mark-sweep GC over read-only objects. Once the objects have
> been marked, poof, no more shared pages. But this is OK,
> because we really don't want to GC these objects anyway, and
> we might as well save time by not looking at them during GC.
66% of pure storage is strings. These cannot refer any anything so it
is irrelevant for them, isn't it?
Strings have property lists, so there is a mark-through cost even
for them. And this means that we need the crash protection for
them as well.
> The fact that read-only objects can't be GC'd also
happens to be
> the reason why the read-onlyness of these objects needs to be
> enforced by the OS. If it isn't enforced, we can get crashes.
Wy does it need to be enforced "by the OS"? Isn't it enough if we
enforce it "by hand"?
The OS won't forget or be ignorant of the rules. It is a good
second level of protection.
I still think the best solution would be to stop using purespace for
conses and keep the checks for other things that can refer to lisp
objects and can be changed (that would really be just the vectors) and
even THAT is just another 14%.
On my single-user system I certainly don't care. On a multi-user
system, I don't know.