On Saturday, 13 October 2012 at 20:12:04 UTC, Alex Rønne Petersen wrote:
2) It forces scanning of 'pinned' objects to be imprecise.

I'm not so sure about that.

In the comment section you added to Git core.memory, you wrote »Roots are always scanned conservatively. Roots include […] memory locations added through the GC.addRoot and GC.addRange functions.«. But this statement is problematic, since addRange() adds a »memory location« consisting of root pointers, whereas addRoot() adds a single (rvalue) root pointer.

Thus, depending on which case you consider, »memory location« would refer to different levels of indirection.

As far as I can see, adding objects you want to »pin« as roots would only force them to be scanned imprecisely if you'd force the entire GC memory block referred to by addRoot() resp. all the GC blocks referred to by the range added using addRange() to be scanned conservatively. But why would this be necessary?

David

Reply via email to