diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-04-12 10:17:13 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-04-12 10:17:13 +0100 |
| commit | 8831821e326a14e57d08ed9b1c8da1e5e3f7cf9a (patch) | |
| tree | 0f6304114d3513863227ef88901c46c8d7682da0 | |
| parent | 1c6e2b6df2531c3c56644f1d7957a1e7a8e7fe00 (diff) | |
Make targets independent of specific backends
34 files changed, 98 insertions, 74 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/BackendFactory.java b/src/main/java/org/shedlang/compiler/backends/BackendFactory.java index 66b0bc9d..6c5482fd 100644 --- a/src/main/java/org/shedlang/compiler/backends/BackendFactory.java +++ b/src/main/java/org/shedlang/compiler/backends/BackendFactory.java @@ -1,5 +1,7 @@ package org.shedlang.compiler.backends; +import org.shedlang.compiler.backends.targets.ShedTarget; + import java.util.Optional; public interface BackendFactory { diff --git a/src/main/java/org/shedlang/compiler/backends/Backends.java b/src/main/java/org/shedlang/compiler/backends/Backends.java index 333f73ad..2c6da38a 100644 --- a/src/main/java/org/shedlang/compiler/backends/Backends.java +++ b/src/main/java/org/shedlang/compiler/backends/Backends.java @@ -2,6 +2,7 @@ package org.shedlang.compiler.backends; import org.shedlang.compiler.backends.cranelift.CraneliftBackendFactory; import org.shedlang.compiler.backends.llvm.LlvmBackendFactory; +import org.shedlang.compiler.backends.targets.ShedTarget; import org.shedlang.compiler.backends.wasm.WasmBackendFactory; import java.util.List; diff --git a/src/main/java/org/shedlang/compiler/backends/PatioNativeCHeadersBackend.java b/src/main/java/org/shedlang/compiler/backends/PatioNativeCHeadersBackend.java index 84f7332a..fcd1ef4f 100644 --- a/src/main/java/org/shedlang/compiler/backends/PatioNativeCHeadersBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/PatioNativeCHeadersBackend.java @@ -2,6 +2,7 @@ package org.shedlang.compiler.backends; import org.shedlang.compiler.backends.paths.PartialTargetPath; import org.shedlang.compiler.backends.paths.TargetDir; +import org.shedlang.compiler.backends.targets.ShedTarget; import org.shedlang.compiler.config.ProfileConfig; import org.shedlang.compiler.config.ProjectConfig; import org.shedlang.compiler.patio.PatioCompilationUnit; diff --git a/src/main/java/org/shedlang/compiler/backends/PatioTextBackend.java b/src/main/java/org/shedlang/compiler/backends/PatioTextBackend.java index e93c7644..7c563b5d 100644 --- a/src/main/java/org/shedlang/compiler/backends/PatioTextBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/PatioTextBackend.java @@ -2,6 +2,7 @@ package org.shedlang.compiler.backends; import org.shedlang.compiler.backends.paths.PartialTargetPath; import org.shedlang.compiler.backends.paths.TargetDir; +import org.shedlang.compiler.backends.targets.ShedTarget; import org.shedlang.compiler.config.ProfileConfig; import org.shedlang.compiler.config.ProjectConfig; import org.shedlang.compiler.patio.PatioCompilationUnit; diff --git a/src/main/java/org/shedlang/compiler/backends/ShidTextBackend.java b/src/main/java/org/shedlang/compiler/backends/ShidTextBackend.java index 56174101..39ff9bd9 100644 --- a/src/main/java/org/shedlang/compiler/backends/ShidTextBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/ShidTextBackend.java @@ -1,6 +1,7 @@ package org.shedlang.compiler.backends; import org.shedlang.compiler.backends.paths.TargetDir; +import org.shedlang.compiler.backends.targets.ShedTarget; import org.shedlang.compiler.config.ProfileConfig; import org.shedlang.compiler.config.ProjectConfig; import org.shedlang.compiler.shid.ShidNamespace; diff --git a/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackend.java b/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackend.java index 584fd7d0..75794092 100644 --- a/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackend.java @@ -5,7 +5,7 @@ import org.pcollections.PVector; import org.shedlang.compiler.backends.Backend; import org.shedlang.compiler.backends.PatioBackends; import org.shedlang.compiler.backends.llvm.LlvmBackend; -import org.shedlang.compiler.backends.llvm.LlvmTarget; +import org.shedlang.compiler.backends.targets.NativeTarget; import org.shedlang.compiler.backends.paths.PartialTargetPath; import org.shedlang.compiler.backends.paths.TargetDir; import org.shedlang.compiler.config.ProfileConfig; @@ -30,15 +30,15 @@ import java.util.Optional; import static org.shedlang.compiler.util.processes.ProcessRunner.runInheritIo; public class CraneliftBackend implements Backend { - public static final CraneliftBackend AMD64 = forTarget(LlvmTarget.AMD64); + public static final CraneliftBackend AMD64 = forTarget(NativeTarget.AMD64); - public static CraneliftBackend forTarget(LlvmTarget target) { + public static CraneliftBackend forTarget(NativeTarget target) { return new CraneliftBackend(target); } - private final LlvmTarget target; + private final NativeTarget target; - private CraneliftBackend(LlvmTarget target) { + private CraneliftBackend(NativeTarget target) { this.target = target; } diff --git a/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackendFactory.java b/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackendFactory.java index b933d975..32c3c527 100644 --- a/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackendFactory.java +++ b/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackendFactory.java @@ -2,8 +2,8 @@ package org.shedlang.compiler.backends.cranelift; import org.shedlang.compiler.backends.Backend; import org.shedlang.compiler.backends.BackendFactory; -import org.shedlang.compiler.backends.ShedTarget; -import org.shedlang.compiler.backends.llvm.LlvmTarget; +import org.shedlang.compiler.backends.targets.ShedTarget; +import org.shedlang.compiler.backends.targets.NativeTarget; import java.util.Optional; @@ -15,8 +15,8 @@ public class CraneliftBackendFactory implements BackendFactory { @Override public Optional<Backend> backendForTarget(ShedTarget target) { - Optional<LlvmTarget> llvmTarget = switch (target) { - case AMD64 -> Optional.of(LlvmTarget.AMD64); + Optional<NativeTarget> llvmTarget = switch (target) { + case AMD64 -> Optional.of(NativeTarget.AMD64); default -> Optional.empty(); }; diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java index 0789467a..78177ec4 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java @@ -15,6 +15,7 @@ import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmVariableGlobal; import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmVariableLocal; import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes; import org.shedlang.compiler.backends.paths.TargetDir; +import org.shedlang.compiler.backends.targets.NativeTarget; import org.shedlang.compiler.config.ProfileConfig; import org.shedlang.compiler.config.ProjectConfig; import org.shedlang.compiler.patio.PatioCompilationUnit; @@ -34,16 +35,16 @@ import java.util.Optional; import static org.shedlang.compiler.util.processes.ProcessRunner.runInheritIo; public class LlvmBackend implements Backend { - public static final LlvmBackend AMD64 = new LlvmBackend(LlvmTarget.AMD64); - public static final LlvmBackend I686 = new LlvmBackend(LlvmTarget.I686); + public static final LlvmBackend AMD64 = new LlvmBackend(NativeTarget.AMD64); + public static final LlvmBackend I686 = new LlvmBackend(NativeTarget.I686); - public static LlvmBackend forTarget(LlvmTarget target) { + public static LlvmBackend forTarget(NativeTarget target) { return new LlvmBackend(target); } - private final LlvmTarget target; + private final NativeTarget target; - private LlvmBackend(LlvmTarget target) { + private LlvmBackend(NativeTarget target) { this.target = target; } diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackendFactory.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackendFactory.java index 301a912b..7bcc6dd4 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackendFactory.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackendFactory.java @@ -2,7 +2,8 @@ package org.shedlang.compiler.backends.llvm; import org.shedlang.compiler.backends.Backend; import org.shedlang.compiler.backends.BackendFactory; -import org.shedlang.compiler.backends.ShedTarget; +import org.shedlang.compiler.backends.targets.NativeTarget; +import org.shedlang.compiler.backends.targets.ShedTarget; import java.util.Optional; @@ -14,9 +15,9 @@ public class LlvmBackendFactory implements BackendFactory { @Override public Optional<Backend> backendForTarget(ShedTarget target) { - Optional<LlvmTarget> llvmTarget = switch (target) { - case AMD64 -> Optional.of(LlvmTarget.AMD64); - case I686 -> Optional.of(LlvmTarget.I686); + Optional<NativeTarget> llvmTarget = switch (target) { + case AMD64 -> Optional.of(NativeTarget.AMD64); + case I686 -> Optional.of(NativeTarget.I686); default -> Optional.empty(); }; diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java index a49752e0..8093941e 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java @@ -3,7 +3,7 @@ package org.shedlang.compiler.backends.llvm.codegen; import org.pcollections.PVector; import org.pcollections.TreePVector; import org.shedlang.compiler.backends.llvm.LlvmCodeGenLocalVariableSpace; -import org.shedlang.compiler.backends.llvm.LlvmTarget; +import org.shedlang.compiler.backends.targets.NativeTarget; import org.shedlang.compiler.backends.llvm.codegen.errors.SizeofJmpBufError; import org.shedlang.compiler.backends.llvm.ir.ast.*; import org.shedlang.compiler.backends.llvm.ir.ast.instructions.*; @@ -32,13 +32,13 @@ import java.util.stream.StreamSupport; public class PatioToLlvm { private static final LlvmType EXCEPTION_TAG_TYPE = LlvmTypes.INT_32; - private static LlvmType exceptionValueType(LlvmTarget target) { + private static LlvmType exceptionValueType(NativeTarget target) { return target.patioIntType(); } - private static final ConcurrentMap<LlvmTarget, Integer> JMP_BUF_SIZE = new ConcurrentHashMap<>(); + private static final ConcurrentMap<NativeTarget, Integer> JMP_BUF_SIZE = new ConcurrentHashMap<>(); - private static int readJmpBufSize(LlvmTarget target) { + private static int readJmpBufSize(NativeTarget target) { try { var sizeofJmpBufString = Files.readString( ShedCompilerFiles.getRoot() @@ -52,7 +52,7 @@ public class PatioToLlvm { } } - private static LlvmType jmpBufType(LlvmTarget target) { + private static LlvmType jmpBufType(NativeTarget target) { if (!JMP_BUF_SIZE.containsKey(target)) { JMP_BUF_SIZE.put(target, readJmpBufSize(target)); } @@ -60,7 +60,7 @@ public class PatioToLlvm { return LlvmTypes.array(JMP_BUF_SIZE.get(target), LlvmTypes.INT_8); } - private static LlvmFunctionDeclaration setjmpDeclaration(LlvmTarget target) { + private static LlvmFunctionDeclaration setjmpDeclaration(NativeTarget target) { return new LlvmFunctionDeclaration( "_setjmp", target.cIntType(), @@ -79,7 +79,7 @@ public class PatioToLlvm { false ); - private static LlvmGlobalDefinition exceptionValueDeclaration(LlvmTarget target) { + private static LlvmGlobalDefinition exceptionValueDeclaration(NativeTarget target) { return new LlvmGlobalDefinition( "patio__runtime__exceptions_exception_value", exceptionValueType(target), @@ -90,7 +90,7 @@ public class PatioToLlvm { ); } - private static LlvmFunctionDeclaration throwDeclaration(LlvmTarget target) { + private static LlvmFunctionDeclaration throwDeclaration(NativeTarget target) { return new LlvmFunctionDeclaration( "patio__runtime__exceptions_throw", LlvmTypes.pointer(LlvmTypes.VOID), @@ -1072,7 +1072,7 @@ public class PatioToLlvm { private static LlvmType patioDataOffsetToLlvmType( PatioDataLayout patioDataLayout, List<Integer> patioOffsets, - LlvmTarget target + NativeTarget target ) { return patioDataOffsetToLlvmType( patioDataLayout, @@ -1084,7 +1084,7 @@ public class PatioToLlvm { private static LlvmType patioDataOffsetToLlvmType( PatioDataLayout patioDataLayout, PVector<Integer> patioOffsets, - LlvmTarget target + NativeTarget target ) { return patioDataLayoutToLlvmType( PatioOffsets.offsetDataLayout(patioDataLayout, patioOffsets), @@ -1216,7 +1216,7 @@ public class PatioToLlvm { private static LlvmOperand patioIntValueToLlvmOperand( PatioIntValue intValue, PatioType patioDestinationType, - LlvmTarget target + NativeTarget target ) { return switch (intValue) { case PatioIntValueByteOffsetOf byteOffsetOf -> @@ -1241,7 +1241,7 @@ public class PatioToLlvm { private static LlvmType patioReturnTypesToLlvmType( List<PatioType> patioReturnTypes, - LlvmTarget target + NativeTarget target ) { var llvmReturnTypes = patioReturnTypes.stream() .map(patioReturnType -> patioTypeToLlvmType(patioReturnType, target)) @@ -1261,7 +1261,7 @@ public class PatioToLlvm { private static LlvmType patioTypeToLlvmType( PatioType patioType, - LlvmTarget target + NativeTarget target ) { return switch (patioType) { case PatioBoolType patioBoolType -> @@ -1286,7 +1286,7 @@ public class PatioToLlvm { private static LlvmType patioDataLayoutToLlvmType( PatioDataLayout layout, - LlvmTarget target + NativeTarget target ) { return switch (layout) { case PatioDataLayoutArray patioDataLayoutArray -> @@ -1328,7 +1328,7 @@ public class PatioToLlvm { private static LlvmOperand patioDataLayoutToZeroedLlvmOperand( PatioDataLayout layout, - LlvmTarget target + NativeTarget target ) { return switch (layout) { case PatioDataLayoutArray patioDataLayoutArray -> @@ -1378,7 +1378,7 @@ public class PatioToLlvm { private static LlvmOperand patioDataValueToLlvmOperand( PatioDataValue value, - LlvmTarget target + NativeTarget target ) { return switch (value) { case PatioDataValueArray patioDataValueArray -> { @@ -1432,7 +1432,7 @@ public class PatioToLlvm { private static LlvmOperand sizeOf( PatioDataLayout layout, PatioType patioDestinationType, - LlvmTarget target + NativeTarget target ) { var llvmType = patioDataLayoutToLlvmType( layout, @@ -1445,7 +1445,7 @@ public class PatioToLlvm { private static LlvmOperand sizeOf( LlvmType type, PatioType patioDestinationType, - LlvmTarget target + NativeTarget target ) { var sizePtr = new LlvmOperandGetElementPtr( LlvmTypes.pointer(type), @@ -1462,7 +1462,7 @@ public class PatioToLlvm { PatioDataLayout patioDataLayout, List<Integer> patioOffset, PatioType patioDestinationType, - LlvmTarget target + NativeTarget target ) { var offsetPtr = new LlvmOperandGetElementPtr( LlvmTypes.pointer(patioDataLayoutToLlvmType( diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContext.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContext.java index ca419896..31154679 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContext.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContext.java @@ -5,7 +5,7 @@ import org.pcollections.PStack; import org.pcollections.PVector; import org.shedlang.compiler.backends.NameAllocator; import org.shedlang.compiler.backends.llvm.LlvmCodeGenLocalVariableSpace; -import org.shedlang.compiler.backends.llvm.LlvmTarget; +import org.shedlang.compiler.backends.targets.NativeTarget; import org.shedlang.compiler.backends.llvm.ir.ast.LlvmBasicBlock; import org.shedlang.compiler.backends.llvm.ir.ast.instructions.LlvmBrUnconditional; import org.shedlang.compiler.backends.llvm.ir.ast.instructions.LlvmInstruction; @@ -61,7 +61,7 @@ class PatioToLlvmFunctionContext { this.loopLabels = loopLabels; } - LlvmTarget target() { + NativeTarget target() { return this.moduleContext.target(); } diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmGlobalContext.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmGlobalContext.java index 4077ce6e..292fdd5f 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmGlobalContext.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmGlobalContext.java @@ -1,26 +1,26 @@ package org.shedlang.compiler.backends.llvm.codegen; import org.pcollections.PMap; -import org.shedlang.compiler.backends.llvm.LlvmTarget; +import org.shedlang.compiler.backends.targets.NativeTarget; import org.shedlang.compiler.util.P; public class PatioToLlvmGlobalContext { - public static PatioToLlvmGlobalContext empty(LlvmTarget target) { + public static PatioToLlvmGlobalContext empty(NativeTarget target) { return new PatioToLlvmGlobalContext(target, P.map()); } - private final LlvmTarget target; + private final NativeTarget target; private final PMap<String, Integer> exceptionTypeNameToTag; private PatioToLlvmGlobalContext( - LlvmTarget target, + NativeTarget target, PMap<String, Integer> exceptionTypeNameToTag ) { this.target = target; this.exceptionTypeNameToTag = exceptionTypeNameToTag; } - public LlvmTarget target() { + public NativeTarget target() { return this.target; } diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmModuleContext.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmModuleContext.java index e5a36d14..abad8cdb 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmModuleContext.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmModuleContext.java @@ -1,13 +1,13 @@ package org.shedlang.compiler.backends.llvm.codegen; import org.pcollections.PVector; -import org.shedlang.compiler.backends.llvm.LlvmTarget; +import org.shedlang.compiler.backends.targets.NativeTarget; import org.shedlang.compiler.backends.llvm.ir.ast.LlvmModule; import org.shedlang.compiler.backends.llvm.ir.ast.LlvmTopLevelEntity; import org.shedlang.compiler.util.P; class PatioToLlvmModuleContext { - static PatioToLlvmModuleContext empty(LlvmTarget target) { + static PatioToLlvmModuleContext empty(NativeTarget target) { return of(PatioToLlvmGlobalContext.empty(target)); } @@ -33,7 +33,7 @@ class PatioToLlvmModuleContext { )); } - LlvmTarget target() { + NativeTarget target() { return this.globalContext.target(); } diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmTarget.java b/src/main/java/org/shedlang/compiler/backends/targets/NativeTarget.java index 35159998..69fb9044 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmTarget.java +++ b/src/main/java/org/shedlang/compiler/backends/targets/NativeTarget.java @@ -1,11 +1,11 @@ -package org.shedlang.compiler.backends.llvm; +package org.shedlang.compiler.backends.targets; import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypeScalar; import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes; import java.util.List; -public enum LlvmTarget { +public enum NativeTarget { AMD64("amd64", "x86_64-unknown-linux-gnu", LlvmTypes.INT_64, List.of()), I686("i686", "i686-unknown-linux-gnu", LlvmTypes.INT_32, List.of("-m32")); @@ -14,7 +14,7 @@ public enum LlvmTarget { private final LlvmTypeScalar sizeT; private final List<String> clangFlags; - LlvmTarget( + NativeTarget( String targetName, String targetTriple, LlvmTypeScalar sizeT, diff --git a/src/main/java/org/shedlang/compiler/backends/ShedTarget.java b/src/main/java/org/shedlang/compiler/backends/targets/ShedTarget.java index d99de131..e65129b5 100644 --- a/src/main/java/org/shedlang/compiler/backends/ShedTarget.java +++ b/src/main/java/org/shedlang/compiler/backends/targets/ShedTarget.java @@ -1,4 +1,4 @@ -package org.shedlang.compiler.backends; +package org.shedlang.compiler.backends.targets; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmTarget.java b/src/main/java/org/shedlang/compiler/backends/targets/WasmTarget.java index 920b1cab..42aeea5c 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmTarget.java +++ b/src/main/java/org/shedlang/compiler/backends/targets/WasmTarget.java @@ -1,4 +1,4 @@ -package org.shedlang.compiler.backends.wasm; +package org.shedlang.compiler.backends.targets; import org.shedlang.compiler.backends.wasm.structure.ast.types.WasmIndexType; import org.shedlang.compiler.backends.wasm.structure.ast.types.WasmValueType; diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java index 0260f120..8edbc42f 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java @@ -3,6 +3,7 @@ package org.shedlang.compiler.backends.wasm; import org.pcollections.PMap; import org.pcollections.PStack; import org.pcollections.PVector; +import org.shedlang.compiler.backends.targets.WasmTarget; import org.shedlang.compiler.backends.wasm.structure.ast.instructions.*; import org.shedlang.compiler.backends.wasm.structure.ast.linking.WasmMemoryAddress; import org.shedlang.compiler.backends.wasm.structure.ast.modules.*; diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java b/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java index 7b9411b4..d39cae99 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java @@ -5,6 +5,7 @@ import org.shedlang.compiler.backends.Backend; import org.shedlang.compiler.backends.PatioBackends; import org.shedlang.compiler.backends.paths.PartialTargetPath; import org.shedlang.compiler.backends.paths.TargetDir; +import org.shedlang.compiler.backends.targets.WasmTarget; import org.shedlang.compiler.backends.wasm.structure.WasmBinaryFormat; import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmCall; import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmDrop; diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackendFactory.java b/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackendFactory.java index 439bc05d..574c4220 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackendFactory.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackendFactory.java @@ -2,7 +2,8 @@ package org.shedlang.compiler.backends.wasm; import org.shedlang.compiler.backends.Backend; import org.shedlang.compiler.backends.BackendFactory; -import org.shedlang.compiler.backends.ShedTarget; +import org.shedlang.compiler.backends.targets.ShedTarget; +import org.shedlang.compiler.backends.targets.WasmTarget; import java.util.Optional; diff --git a/src/main/java/org/shedlang/compiler/cli/ShedCli.java b/src/main/java/org/shedlang/compiler/cli/ShedCli.java index 9ae3fb75..2c3e7a78 100644 --- a/src/main/java/org/shedlang/compiler/cli/ShedCli.java +++ b/src/main/java/org/shedlang/compiler/cli/ShedCli.java @@ -6,7 +6,7 @@ import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; import org.shedlang.compiler.ShedCompiler; import org.shedlang.compiler.backends.Backends; -import org.shedlang.compiler.backends.ShedTarget; +import org.shedlang.compiler.backends.targets.ShedTarget; import org.shedlang.compiler.errors.CompilerError; import org.shedlang.compiler.sources.NullSource; diff --git a/src/main/java/org/shedlang/compiler/cli/UnsupportedTargetError.java b/src/main/java/org/shedlang/compiler/cli/UnsupportedTargetError.java index 265c2cdc..0a78433c 100644 --- a/src/main/java/org/shedlang/compiler/cli/UnsupportedTargetError.java +++ b/src/main/java/org/shedlang/compiler/cli/UnsupportedTargetError.java @@ -1,6 +1,6 @@ package org.shedlang.compiler.cli; -import org.shedlang.compiler.backends.ShedTarget; +import org.shedlang.compiler.backends.targets.ShedTarget; import org.shedlang.compiler.errors.CompilerError; import org.shedlang.compiler.sources.Sources; diff --git a/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftAmd64Tests.java b/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftAmd64Tests.java index c58e475c..e4095cad 100644 --- a/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftAmd64Tests.java +++ b/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftAmd64Tests.java @@ -1,12 +1,12 @@ package org.shedlang.compiler.backends.cranelift; import org.junit.jupiter.api.Disabled; -import org.shedlang.compiler.backends.llvm.LlvmTarget; +import org.shedlang.compiler.backends.targets.NativeTarget; @Disabled public class PatioToCraneliftAmd64Tests extends PatioToCraneliftTests { @Override - protected LlvmTarget llvmTarget() { - return LlvmTarget.AMD64; + protected NativeTarget target() { + return NativeTarget.AMD64; } } diff --git a/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftTests.java b/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftTests.java index 10f33a5e..dc7aea65 100644 --- a/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftTests.java +++ b/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftTests.java @@ -1,6 +1,6 @@ package org.shedlang.compiler.backends.cranelift; -import org.shedlang.compiler.backends.llvm.LlvmTarget; +import org.shedlang.compiler.backends.targets.NativeTarget; import org.shedlang.compiler.backends.paths.PartialTargetPath; import org.shedlang.compiler.patio.PatioCompilationUnit; import org.shedlang.compiler.patio.PatioExampleTests; @@ -47,7 +47,7 @@ public abstract class PatioToCraneliftTests extends PatioExampleTests { Files.createDirectories(Path.of("tests-tmp")); var workingDirectory = Files.createTempDirectory(Path.of("tests-tmp"), "PatioToCraneliftTests"); - var backend = CraneliftBackend.forTarget(this.llvmTarget()); + var backend = CraneliftBackend.forTarget(this.target()); var objectFilePath = backend.compileCompilationUnit( patio, new PartialTargetPath(workingDirectory.resolve("main")) @@ -55,7 +55,7 @@ public abstract class PatioToCraneliftTests extends PatioExampleTests { var executablePath = workingDirectory.resolve("main"); - var runtime = ShedRuntime.defaultRuntime(LlvmTarget.AMD64.targetName()); + var runtime = ShedRuntime.defaultRuntime(NativeTarget.AMD64.targetName()); backend.link( List.of( objectFilePath, @@ -68,5 +68,5 @@ public abstract class PatioToCraneliftTests extends PatioExampleTests { return TestProcessRunner.runCaptureOutput(List.of(executablePath.toString())); } - protected abstract LlvmTarget llvmTarget(); + protected abstract NativeTarget target(); } diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/PatioToAmd64Tests.java b/src/test/java/org/shedlang/compiler/backends/llvm/PatioToAmd64Tests.java index 472100e9..2170ab02 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/PatioToAmd64Tests.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/PatioToAmd64Tests.java @@ -1,8 +1,10 @@ package org.shedlang.compiler.backends.llvm; +import org.shedlang.compiler.backends.targets.NativeTarget; + public class PatioToAmd64Tests extends PatioToLlvmTests { @Override - protected LlvmTarget llvmTarget() { - return LlvmTarget.AMD64; + protected NativeTarget target() { + return NativeTarget.AMD64; } } diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/PatioToI686Tests.java b/src/test/java/org/shedlang/compiler/backends/llvm/PatioToI686Tests.java index cff521d3..7d80a768 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/PatioToI686Tests.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/PatioToI686Tests.java @@ -1,8 +1,10 @@ package org.shedlang.compiler.backends.llvm; +import org.shedlang.compiler.backends.targets.NativeTarget; + public class PatioToI686Tests extends PatioToLlvmTests { @Override - protected LlvmTarget llvmTarget() { - return LlvmTarget.I686; + protected NativeTarget target() { + return NativeTarget.I686; } } diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/PatioToLlvmTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/PatioToLlvmTests.java index 9a11c648..0237becb 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/PatioToLlvmTests.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/PatioToLlvmTests.java @@ -10,6 +10,7 @@ import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmOperandInt; import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmVariableGlobal; import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes; import org.shedlang.compiler.backends.paths.PartialTargetPath; +import org.shedlang.compiler.backends.targets.NativeTarget; import org.shedlang.compiler.patio.PatioCompilationUnit; import org.shedlang.compiler.patio.PatioExampleTests; import org.shedlang.compiler.runtime.ShedRuntime; @@ -27,7 +28,7 @@ public abstract class PatioToLlvmTests extends PatioExampleTests { protected ExecutionResult executeCompilationUnit(PatioCompilationUnit patio) throws IOException, InterruptedException { var llvmModuleResult = PatioToLlvm.generateCompilationUnit( patio, - PatioToLlvmGlobalContext.empty(this.llvmTarget()) + PatioToLlvmGlobalContext.empty(this.target()) ); var llvmModule = llvmModuleResult.value(); @@ -61,8 +62,8 @@ public abstract class PatioToLlvmTests extends PatioExampleTests { var executablePath = workingDirectory.resolve("main"); - var runtime = ShedRuntime.defaultRuntime(llvmTarget().targetName()); - LlvmBackend.forTarget(this.llvmTarget()).link( + var runtime = ShedRuntime.defaultRuntime(target().targetName()); + LlvmBackend.forTarget(this.target()).link( List.of( objectFilePath, runtime.dir().resolve("libpatio_test.a") @@ -74,5 +75,5 @@ public abstract class PatioToLlvmTests extends PatioExampleTests { return TestProcessRunner.runCaptureOutput(List.of(executablePath.toString())); } - protected abstract LlvmTarget llvmTarget(); + protected abstract NativeTarget target(); } diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContextTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContextTests.java index 7792519c..f6d31c46 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContextTests.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContextTests.java @@ -1,7 +1,7 @@ package org.shedlang.compiler.backends.llvm.codegen; import org.junit.jupiter.api.Test; -import org.shedlang.compiler.backends.llvm.LlvmTarget; +import org.shedlang.compiler.backends.targets.NativeTarget; import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr; import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes; @@ -15,7 +15,7 @@ import static org.zwobble.precisely.Matchers.isSequence; public class PatioToLlvmFunctionContextTests { @Test public void whenThereAreNoInstructionsOutsideOfBasicBlockThenToBasicBlocksReturnsBasicBlocks() { - var context = PatioToLlvmFunctionContext.of(PatioToLlvmModuleContext.empty(LlvmTarget.AMD64)); + var context = PatioToLlvmFunctionContext.of(PatioToLlvmModuleContext.empty(NativeTarget.AMD64)); var addInstruction = LlvmIr.add( LlvmIr.variableLocal("a"), LlvmTypes.INT_64, @@ -35,7 +35,7 @@ public class PatioToLlvmFunctionContextTests { @Test public void whenThereAreInstructionsOutsideOfBasicBlockThenToBasicBlocksThrowsException() { - var context = PatioToLlvmFunctionContext.of(PatioToLlvmModuleContext.empty(LlvmTarget.AMD64)); + var context = PatioToLlvmFunctionContext.of(PatioToLlvmModuleContext.empty(NativeTarget.AMD64)); var addInstruction = LlvmIr.add( LlvmIr.variableLocal("a"), LlvmTypes.INT_64, diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm32Tests.java b/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm32Tests.java index 44626dca..1e630963 100644 --- a/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm32Tests.java +++ b/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm32Tests.java @@ -1,5 +1,7 @@ package org.shedlang.compiler.backends.wasm; +import org.shedlang.compiler.backends.targets.WasmTarget; + public class PatioToWasm32Tests extends PatioToWasmTests { @Override protected WasmTarget wasmTarget() { diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm64Tests.java b/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm64Tests.java index d73bf2c8..c11a0e3e 100644 --- a/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm64Tests.java +++ b/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm64Tests.java @@ -1,5 +1,7 @@ package org.shedlang.compiler.backends.wasm; +import org.shedlang.compiler.backends.targets.WasmTarget; + public class PatioToWasm64Tests extends PatioToWasmTests { @Override protected WasmTarget wasmTarget() { diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasmTests.java b/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasmTests.java index 946c49fb..833defa4 100644 --- a/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasmTests.java +++ b/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasmTests.java @@ -1,5 +1,6 @@ package org.shedlang.compiler.backends.wasm; +import org.shedlang.compiler.backends.targets.WasmTarget; import org.shedlang.compiler.backends.wasm.structure.WasmBinaryFormat; import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmCall; import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmExpression; diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/Wasm32ExampleTests.java b/src/test/java/org/shedlang/compiler/backends/wasm/Wasm32ExampleTests.java index 06c1b040..4c257e1b 100644 --- a/src/test/java/org/shedlang/compiler/backends/wasm/Wasm32ExampleTests.java +++ b/src/test/java/org/shedlang/compiler/backends/wasm/Wasm32ExampleTests.java @@ -2,6 +2,7 @@ package org.shedlang.compiler.backends.wasm; import org.shedlang.compiler.backends.Backend; import org.shedlang.compiler.backends.ExampleTests; +import org.shedlang.compiler.backends.targets.WasmTarget; import java.util.List; import java.util.Set; diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/Wasm64ExampleTests.java b/src/test/java/org/shedlang/compiler/backends/wasm/Wasm64ExampleTests.java index fdc1cf28..04e1d08c 100644 --- a/src/test/java/org/shedlang/compiler/backends/wasm/Wasm64ExampleTests.java +++ b/src/test/java/org/shedlang/compiler/backends/wasm/Wasm64ExampleTests.java @@ -2,6 +2,7 @@ package org.shedlang.compiler.backends.wasm; import org.shedlang.compiler.backends.Backend; import org.shedlang.compiler.backends.ExampleTests; +import org.shedlang.compiler.backends.targets.WasmTarget; import java.util.List; import java.util.Set; diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/WasmTesting.java b/src/test/java/org/shedlang/compiler/backends/wasm/WasmTesting.java index f4f86440..d437b56a 100644 --- a/src/test/java/org/shedlang/compiler/backends/wasm/WasmTesting.java +++ b/src/test/java/org/shedlang/compiler/backends/wasm/WasmTesting.java @@ -1,6 +1,7 @@ package org.shedlang.compiler.backends.wasm; import org.pcollections.PVector; +import org.shedlang.compiler.backends.targets.WasmTarget; import org.shedlang.compiler.filesystem.ShedCompilerFiles; import org.shedlang.compiler.util.P; diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatTesting.java b/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatTesting.java index 61e7eba1..60213f81 100644 --- a/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatTesting.java +++ b/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatTesting.java @@ -1,6 +1,6 @@ package org.shedlang.compiler.backends.wasm.structure.binary; -import org.shedlang.compiler.backends.wasm.WasmTarget; +import org.shedlang.compiler.backends.targets.WasmTarget; import org.shedlang.compiler.backends.wasm.structure.ast.modules.WasmModule; import org.shedlang.compiler.testing.TestProcessRunner; import org.shedlang.compiler.util.P; |
