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

Reply via email to