How to find what is causing a closure allocation

Boris Carvajal boris2.9 at gmail.com
Wed Oct 2 22:54:28 UTC 2019


On Wednesday, 2 October 2019 at 15:19:43 UTC, John Colvin wrote:
> I have a function that allocates a closure somewhere in it (as 
> shown by the result of -profile=gc).
>
> I can't make the function nogc as it calls a lot of other GC 
> using code.
>
> profilegc.log only gives me the line number of the function 
> signature, which doesn't give me any hint as to where in the 
> function the closure is allocated.
>
> Anyone have any nice tricks to help narrow this down.

This hack seems to show the detailed info of @nogc also in normal 
code.

------------------------------------------------
diff --git a/src/dmd/func.d b/src/dmd/func.d
index 832cd0bf7..e1fad8cdc 100644
--- a/src/dmd/func.d
+++ b/src/dmd/func.d
@@ -1975,7 +1975,7 @@ extern (C++) class FuncDeclaration : 
Declaration
          else
          {
              printGCUsage(loc, "using closure causes GC 
allocation");
-            return false;
+//            return false;
          }

          FuncDeclarations a;
------------------------------------------------



More information about the Digitalmars-d-learn mailing list