On Tue, Jul 30, 2013 at 4:43 PM, Jonathan S. Shapiro <[email protected]>wrote:
> Or stick them in a region whose liveness doesn't shrink, e.g. because > every pointer overwrite in that region is a borrowed pointer overwrite. > This is *exactly* the scenario that has me thinking about > region-annotated borrowed pointers. > So I'm thinking during gc-tracing you effectively credit all references tagged to the region to the region-box, which allows you to get the C-like performance benefits of direct interior pointers as long as you are willing to keep the entire region alive until the GC knows all references with that tag are gone. With 64 bit pointers and bounded max-regions you can just steal some address bits for the region tag. Did I get that right? What I don't understand is how this is better than a regular GC heap, since you still have to trace all the references to determine region liveliness. I suppose it has the advantage that it more naturally supports stored borrowed pointers to elements inside value-type arrays. Maybe rather than dealing with dynamic allocation regions, there could just be a special type of value-type-array which allocates a region number and allows interior references which are tracked in this manner?
_______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
