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?
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"?
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%.
So my mistake was that the loss of 80K for not using pure store for
cons cells is incurred on all systems, including modern ones.
Jan