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
