diff options
| author | Michael Williamson <mike@zwobble.org> | 2025-03-09 15:49:44 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2025-03-09 15:49:44 +0000 |
| commit | 596b1c1fde6b94326c7cc1ee35c81586fa04ab72 (patch) | |
| tree | ec136bf863a8b1e1469854ce1a1b1d714b2bcfec /src/main/java | |
| parent | 0272d952e38e3d449ac4d077c6bc6c4ed405fe10 (diff) | |
Clear GC roots so valgrind can find leaks
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatio.java | 1 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioGc.java | 23 |
2 files changed, 24 insertions, 0 deletions
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 + )); + } } |
