Pal-Kristian:

I'm afraid your note went to the list. On the bitc-dev list, replies go to
the list by default.


You are exploring good ideas, but the main reason I'm pushing on this is
that I *want* to be able to do concurrent background collection. As you
correctly note, removing that requirement makes this a whole lot easier.
It's hard to limit pause times, though, because you have to clear the
forwarded pointers before you let the mutator resume. Unless you have a
read barrier, that may require a full-heap scan.

Mandatory indirection on reference load operations has been done in a
number of early systems. It's known as an object table. The performance is *
dismal*, and the method was abandoned.

When the branch isn't taken, it's not so bad. The piece that you may be
missing is that it's very rare to load an object reference and then touch
just one field. The cost of the read barrier is typically well amortized,
but even so it is generally agreed that read barriers that incur a runtime
cost on every object reference load are *way* too expensive. Programs tend
to do *lots* of reads.


Jonathan
_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to