diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-28 00:29:06 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-28 00:29:06 +0100 |
| commit | 57a73165f59c669688686d67463a94ec1ae38146 (patch) | |
| tree | 4323b4e4c84d3c2561f98ccdf12d03ce7a240f09 /src/main/java | |
| parent | d64012b950a646bd1d607f73147619ed1f1abbc7 (diff) | |
Use createFunction() to simplify function creation
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGen.java | 12 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGenNamespaces.java | 16 |
2 files changed, 13 insertions, 15 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGen.java b/src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGen.java index 844a2347..15bf531b 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGen.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGen.java @@ -1,9 +1,9 @@ package org.shedlang.compiler.backends.wasm; import org.shedlang.compiler.backends.wasm.structure.ast.instructions.*; -import org.shedlang.compiler.backends.wasm.structure.ast.modules.WasmFunction; import org.shedlang.compiler.backends.wasm.structure.ast.modules.WasmLocalIndex; import org.shedlang.compiler.backends.wasm.structure.ast.modules.WasmModule; +import org.shedlang.compiler.backends.wasm.structure.ast.types.WasmFuncType; import org.shedlang.compiler.stackir.instructions.*; import org.shedlang.compiler.typechecker.TypeInfo; import org.shedlang.compiler.types.NamespaceName; @@ -22,13 +22,11 @@ public class WasmCodeGen { public static WasmModule generateMain(NamespaceName main, TypeInfo typeInfo) { var context = WasmCodeGenContext.fromTypeInfo(typeInfo); - context = context.addFunction(new WasmFunction( + context = context.createFunction( "_start", - List.of(), - List.of(), - List.of(), - new WasmExpression(List.of()) - )); + new WasmFuncType(List.of(), List.of()), + initContext -> initContext + ); return context.toModule(); } diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGenNamespaces.java b/src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGenNamespaces.java index a1fdb0fc..a2faaacd 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGenNamespaces.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmCodeGenNamespaces.java @@ -7,8 +7,10 @@ import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmMemory import org.shedlang.compiler.backends.wasm.structure.ast.linking.WasmMemoryAddress; import org.shedlang.compiler.backends.wasm.structure.ast.modules.WasmAlignment; import org.shedlang.compiler.backends.wasm.structure.ast.modules.WasmLocalIndex; +import org.shedlang.compiler.backends.wasm.structure.ast.types.WasmFuncType; import org.shedlang.compiler.types.NamespaceName; +import java.util.List; import java.util.function.Function; public class WasmCodeGenNamespaces { @@ -22,20 +24,18 @@ public class WasmCodeGenNamespaces { ) { var namespaceTypeInfo = context.typeInfo().namespaceTypeInfo(namespaceName); - var dataName = globalNameNamespaceValue(namespaceName); - context = context.addData( - dataName, + globalNameNamespaceValue(namespaceName), // TODO: remove magic number new byte[4 * namespaceTypeInfo.fieldCount()], WasmAlignment.ALIGN_32_BIT ).context(); - context = generateInitBody.apply(context); - - var namespaceInitFunction = context.toFunction(globalNameNamespaceInit(namespaceName)); - - return context.addFunction(namespaceInitFunction); + return context.createFunction( + globalNameNamespaceInit(namespaceName), + new WasmFuncType(List.of(), List.of()), + generateInitBody + ); } public static WasmCodeGenContext fieldStore( |
