On Saturday, 19 September 2015 at 17:56:23 UTC, thedeemon wrote:
Yes, good point. One should keep root ranges small too.
If we carefully use addRoot() and addRange() for data directly pointing to GC heap I think we don't need to let GC scan everything that can lead to this data. This is error-prone in general, of course.

Yes, it is error prone when the project grows over time. And even if it looks like it is working one may forget to remove the addRoot() and then we have a leak. Move semantics could help of course (addRoot in constructor).

But it also makes the transition between GC/non-GC slower. E.g. as long as you keep a scanned pointer on the stack then addRoot() isn't needed. As long as you know that the object remains included in the GC graph, you also don't need addRoot().

But compiler support is needed to ensure that that either the GC graph remains connected or that the pointer actually is pushed to the stack before the object is collected and the stack is scanned. Lots of details that must be right.

I'm not sure if the current collector scans all registers, or just scans the stack? If it only scans the stack then you need to lock out the GC collection process between obtaining a pointer and pushing the pointer on the stack or adding the root.

    • Re: Go 1.5 Dmitry Olshansky via Digitalmars-d-announce
    • Re: Go 1.5 deadalnix via Digitalmars-d-announce
      • Re: Go 1.5 Jack Stouffer via Digitalmars-d-announce
        • Re: Go 1.5 deadalnix via Digitalmars-d-announce
        • Re: Go 1.5 Ola Fosheim Grøstad via Digitalmars-d-announce
  • Re: Go 1.5 Ola Fosheim Grøstad via Digitalmars-d-announce
  • Re: Go 1.5 thedeemon via Digitalmars-d-announce
    • Re: Go 1.5 Ola Fosheim Grøstad via Digitalmars-d-announce
      • Re: Go 1.5 thedeemon via Digitalmars-d-announce
        • Re: Go 1.5 Ola Fosheim Grøstad via Digitalmars-d-announce
          • Re: Go 1.... Ola Fosheim Grøstad via Digitalmars-d-announce
            • Re: ... Daniel Kozak via Digitalmars-d-announce
            • Re: ... Ola Fosheim Grøstad via Digitalmars-d-announce
              • ... Ola Fosheim Grøstad via Digitalmars-d-announce
              • ... Daniel Kozak via Digitalmars-d-announce
        • Re: Go 1.5 Robert M. Münch via Digitalmars-d-announce
    • Re: Go 1.5 Rory McGuire via Digitalmars-d-announce
    • Re: Go 1.5 Ola Fosheim Grøstad via Digitalmars-d-announce
  • Re: Go 1.5 Chris via Digitalmars-d-announce
    • Re: Go 1.5 Ola Fosheim Grøstad via Digitalmars-d-announce

Reply via email to