diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-03-19 18:39:42 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-03-19 18:39:42 +0000 |
| commit | a9a3c3a50b270e21180898d458597a4abfb7804b (patch) | |
| tree | 0c4a8843416f4aaee1ff7aef151f2d168fbc1046 /src/main/java | |
| parent | 3b7a25939f6117ab11084a448e591ffad5380874 (diff) | |
Call GC init once
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatio.java | 2 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioGc.java | 23 |
2 files changed, 25 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 ba3995cb..f86a1b5c 100644 --- a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatio.java +++ b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatio.java @@ -47,6 +47,8 @@ public class ShidToPatio { PatioTypes.INT, source, mainContext -> { + mainContext = ShidToPatioGc.init(source, mainContext); + var namespaceValueResult = mainContext.allocateVal( ShidToPatioLocalSpace.NAMESPACE_VALUE, ShidToPatioTypes.VALUE_TYPE diff --git a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioGc.java b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioGc.java index dd6e161b..a79326b9 100644 --- a/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioGc.java +++ b/src/main/java/org/shedlang/compiler/shidtopatio/ShidToPatioGc.java @@ -128,6 +128,29 @@ public class ShidToPatioGc { )); } + // == Initialization == + + private static final PatioFunctionDeclaration INIT = new PatioFunctionDeclaration( + "shed__runtime__gc_init", + List.of(), + PatioTypes.VOID, + Sources.RUNTIME + ); + + public static ShidToPatioContext init( + Source source, + ShidToPatioContext context + ) { + return context + .ensureCompilationUnitElement(INIT) + .addInstruction(new PatioCall( + Optional.empty(), + INIT.name(), + List.of(), + source + )); + } + // == Allocation == private static final PatioFunctionDeclaration ALLOC = new PatioFunctionDeclaration( |
