diff options
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 + )); + } } |
