I think I understand: since you reparent everything to the new root
and then call talloc_free on the old root, everything dies anyway
whatever its parent was.

However, this makes me think that a copying garbage collection scheme
would be more efficient, since you already have support for visiting
everything alive and are not really using any hierarchical ownership
features, at least for the IR proper.

BTW, are you sure that talloc actually works as expected?
Clearly, you can't have an allocator that both allocates by just
incrementing a pointer, can free memory without fragmentation, and
never copies the objects.

However it seems that's the way talloc is being expected to work,
which is impossible: I guess it might not actually manage to free
memory, because "stealing" does not copy objects and they thus keep
alive the old pool, which results in talloc_free() not freeing nothing
or less than it should. I haven't checked though.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to