From a9a3c3a50b270e21180898d458597a4abfb7804b Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 19 Mar 2024 18:39:42 +0000 Subject: Call GC init once --- .../shedlang/compiler/shidtopatio/ShidToPatio.java | 2 ++ .../compiler/shidtopatio/ShidToPatioGc.java | 23 ++++++++++++++++++++++ 2 files changed, 25 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 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( -- cgit v1.2.3