From 596b1c1fde6b94326c7cc1ee35c81586fa04ab72 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 9 Mar 2025 15:49:44 +0000 Subject: Clear GC roots so valgrind can find leaks --- .../shedlang/compiler/shidtopatio/ShidToPatio.java | 1 + .../compiler/shidtopatio/ShidToPatioGc.java | 23 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatio.java b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatio.java index b3f235cf..51cc0bb8 100644 --- a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatio.java +++ b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatio.java @@ -98,6 +98,7 @@ public class ShidToPatio { ); mainContext = ShidToPatioGc.collect(source, mainContext); + mainContext = ShidToPatioGc.clear(source, mainContext); mainContext = mainContext.addInstruction( new PatioReturn(exitCode, source) diff --git a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioGc.java b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioGc.java index 07e8cbaf..39ff3ce5 100644 --- a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioGc.java +++ b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioGc.java @@ -276,4 +276,27 @@ public class ShidToPatioGc { return context; } + + // == Clear == + + private static final PatioFunctionDeclaration CLEAR = new PatioFunctionDeclaration( + "shed__runtime__gc_clear", + List.of(), + PatioTypes.VOID, + Sources.RUNTIME + ); + + public static ShidToPatioContext clear( + Source source, + ShidToPatioContext context + ) { + return context + .ensureCompilationUnitElement(CLEAR) + .addInstruction(new PatioCall( + Optional.empty(), + CLEAR.name(), + List.of(), + source + )); + } } -- cgit v1.2.3