From: Nikodemus S. <nik...@ra...> - 2014-02-13 08:26:51
|
To respond to a couple of points that for some reason went to private email: For something to be considered a conservative root it must be a valid looking pointer to a valid looking object. Interior pointers are considered only for function objects -- but even then we know the exact function object it is pointing to. In addition to code itself, and it's history, the archives of this list, and possibly Dan B's old blog are worth looking at if trying to figure out why something is done the way it was done. ...but it is possible the whole-region conservativism is indeed something that was put in when we didn't check conservative roots as carefully as we do now. Let's hope that is the case, because then relaxing the that should be relatively simple. Cheers, -- nikodemus On 12 February 2014 23:14, Nikodemus Siivola <nik...@ra...> wrote: >> On 12 February 2014 09:52, Nikodemus Siivola <nik...@ra...> wrote: >> >>> Might work, though I would not be terribly surprised if I'm >>> overlooking something. > > So, I was overlooking something. > > It's not obvious to me why we're preserving the whole allocation > region, instead of just the page, but it *does* seem quite > intentional. Most annoyingly there are comments saying that we do just > that, but nothing that explains the reason that I can see. > > Would need to read more and more carefully to figure that out. > > If I were to hack on this, and if spending a few hours reading the > code didn't yield further insights, I might first try to implement the > exact tracking the the (common?) special case of an allocation region > spanning exactly one page only, or making preserve_pointer preserve > only the pages spanned by the object and seeing what breaks... > > Cheers, > > -- nikodemus |