From f4c370d0a0b62f3a85e19f492107138d9a9fb4a2 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 21 Jan 2024 16:06:09 +0000 Subject: Rename platformTarget to target --- .../backends/llvm/codegen/PatioToLlvm.java | 146 +++++++++--------- .../llvm/codegen/PatioToLlvmFunctionContext.java | 4 +- .../llvm/codegen/PatioToLlvmGlobalContext.java | 12 +- .../llvm/codegen/PatioToLlvmModuleContext.java | 6 +- .../compiler/backends/wasm/PatioToWasm.java | 166 ++++++++++----------- 5 files changed, 167 insertions(+), 167 deletions(-) (limited to 'src/main/java') 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 d17b85ac..8810f886 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 @@ -27,22 +27,22 @@ import java.util.Optional; import java.util.stream.StreamSupport; public class PatioToLlvm { - private static LlvmFunctionDeclaration allocDeclaration(LlvmTarget platformTarget) { + private static LlvmFunctionDeclaration allocDeclaration(LlvmTarget target) { return new LlvmFunctionDeclaration( "shed__runtime__gc_alloc", LlvmTypes.pointer(LlvmTypes.INT_8), List.of( - new LlvmParam(platformTarget.sizeT(), "size"), - new LlvmParam(platformTarget.sizeT(), "children_offset"), - new LlvmParam(platformTarget.sizeT(), "children_count") + new LlvmParam(target.sizeT(), "size"), + new LlvmParam(target.sizeT(), "children_offset"), + new LlvmParam(target.sizeT(), "children_count") ) ); } private static final LlvmType EXCEPTION_TAG_TYPE = LlvmTypes.INT_32; - private static LlvmType exceptionValueType(LlvmTarget platformTarget) { - return platformTarget.patioIntType(); + private static LlvmType exceptionValueType(LlvmTarget target) { + return target.patioIntType(); } private static final Lazy JMP_BUF_SIZE = Lazy.of(() -> readJmpBufSize()); @@ -63,10 +63,10 @@ public class PatioToLlvm { return LlvmTypes.array(JMP_BUF_SIZE.get(), LlvmTypes.INT_8); } - private static LlvmFunctionDeclaration setjmpDeclaration(LlvmTarget platformTarget) { + private static LlvmFunctionDeclaration setjmpDeclaration(LlvmTarget target) { return new LlvmFunctionDeclaration( "_setjmp", - platformTarget.cIntType(), + target.cIntType(), List.of( new LlvmParam(LlvmTypes.pointer(LlvmTypes.VOID), "env") ) @@ -82,10 +82,10 @@ public class PatioToLlvm { false ); - private static LlvmGlobalDefinition exceptionValueDeclaration(LlvmTarget platformTarget) { + private static LlvmGlobalDefinition exceptionValueDeclaration(LlvmTarget target) { return new LlvmGlobalDefinition( "patio__runtime__exceptions_exception_value", - exceptionValueType(platformTarget), + exceptionValueType(target), Optional.empty(), false, false, @@ -93,13 +93,13 @@ public class PatioToLlvm { ); } - private static LlvmFunctionDeclaration throwDeclaration(LlvmTarget platformTarget) { + private static LlvmFunctionDeclaration throwDeclaration(LlvmTarget target) { return new LlvmFunctionDeclaration( "patio__runtime__exceptions_throw", LlvmTypes.pointer(LlvmTypes.VOID), List.of( new LlvmParam(EXCEPTION_TAG_TYPE, "exception_tag"), - new LlvmParam(exceptionValueType(platformTarget), "exception_value") + new LlvmParam(exceptionValueType(target), "exception_value") ) ); } @@ -117,11 +117,11 @@ public class PatioToLlvm { PatioToLlvmGlobalContext globalContext ) { var context = globalContext.enterModule() - .addTopLevelEntity(allocDeclaration(globalContext.platformTarget())) - .addTopLevelEntity(setjmpDeclaration(globalContext.platformTarget())) + .addTopLevelEntity(allocDeclaration(globalContext.target())) + .addTopLevelEntity(setjmpDeclaration(globalContext.target())) .addTopLevelEntity(EXCEPTION_HANDLER_DECLARATION) - .addTopLevelEntity(exceptionValueDeclaration(globalContext.platformTarget())) - .addTopLevelEntity(throwDeclaration(globalContext.platformTarget())) + .addTopLevelEntity(exceptionValueDeclaration(globalContext.target())) + .addTopLevelEntity(throwDeclaration(globalContext.target())) .addTopLevelEntity(RETHROW_DECLARATION); for (var patioCompilationUnitElement : patioCompilationUnit.elements()) { @@ -135,7 +135,7 @@ public class PatioToLlvm { patioFunctionDeclaration.name(), patioTypeToLlvmType( patioFunctionDeclaration.returnType(), - globalContext.platformTarget() + globalContext.target() ) ); } @@ -150,7 +150,7 @@ public class PatioToLlvm { patioFunctionDefinition.name(), patioTypeToLlvmType( patioFunctionDefinition.returnType(), - globalContext.platformTarget() + globalContext.target() ) ); } @@ -194,11 +194,11 @@ public class PatioToLlvm { patioDataElementImmutable.name(), patioDataLayoutToLlvmType( patioDataElementImmutable.value().layout(), - context.platformTarget() + context.target() ), Optional.of(patioDataValueToLlvmOperand( patioDataElementImmutable.value(), - context.platformTarget() + context.target() )), true, true, @@ -214,11 +214,11 @@ public class PatioToLlvm { patioDataElementMutable.name(), patioDataLayoutToLlvmType( patioDataElementMutable.initialValue().layout(), - context.platformTarget() + context.target() ), Optional.of(patioDataValueToLlvmOperand( patioDataElementMutable.initialValue(), - context.platformTarget() + context.target() )), false, true, @@ -234,11 +234,11 @@ public class PatioToLlvm { patioFunctionDeclaration.name(), patioTypeToLlvmType( patioFunctionDeclaration.returnType(), - context.platformTarget() + context.target() ), patioFunctionDeclaration.params().stream() .map(patioParam -> new LlvmParam( - patioTypeToLlvmType(patioParam.type(), context.platformTarget()), + patioTypeToLlvmType(patioParam.type(), context.target()), patioParam.name() )) .toList() @@ -249,14 +249,14 @@ public class PatioToLlvm { PatioFunctionDefinition patioFunctionDefinition, PatioToLlvmModuleContext moduleContext ) { - var platformTarget = moduleContext.platformTarget(); + var target = moduleContext.target(); var functionContext = moduleContext.enterFunction(); for (var patioLocal : patioFunctionDefinition.locals()) { functionContext = functionContext.addPatioLocalToType( patioLocal.ref(), - patioTypeToLlvmType(patioLocal.type(), platformTarget) + patioTypeToLlvmType(patioLocal.type(), target) ); } for (var patioParam : patioFunctionDefinition.params()) { @@ -277,13 +277,13 @@ public class PatioToLlvm { patioFunctionDefinition.name(), patioTypeToLlvmType( patioFunctionDefinition.returnType(), - platformTarget + target ), StreamSupport.stream(patioFunctionDefinition.params().spliterator(), false) .map(patioParam -> new LlvmParam( patioTypeToLlvmType( patioParam.type(), - platformTarget + target ), patioParam.name() )) @@ -311,7 +311,7 @@ public class PatioToLlvm { case PatioAllocHeap patioAllocHeap -> { var llvmType = patioDataLayoutToLlvmType( patioAllocHeap.layout(), - context.platformTarget() + context.target() ); var sizeResult = sizeOf(llvmType, context); var size = sizeResult.value(); @@ -329,7 +329,7 @@ public class PatioToLlvm { var offset = offsetResult.value(); context = offsetResult.context(); - var allocDeclaration = allocDeclaration(context.platformTarget()); + var allocDeclaration = allocDeclaration(context.target()); yield context.addInstruction(allocDeclaration.call( Optional.of(destination), List.of( @@ -349,7 +349,7 @@ public class PatioToLlvm { destination, patioDataLayoutToLlvmType( patioAllocStack.layout(), - context.platformTarget() + context.target() ) )); } @@ -366,7 +366,7 @@ public class PatioToLlvm { destination, LlvmTypes.INT_1, patioOperandToLlvmOperand(patioBoolToInt.value(), context), - context.platformTarget().patioIntType() + context.target().patioIntType() )); } @@ -415,7 +415,7 @@ public class PatioToLlvm { yield context.addInstruction(new LlvmPtrToInt( destination, patioOperandToLlvmOperand(patioDataPtrToInt.value(), context), - context.platformTarget().patioIntType() + context.target().patioIntType() )); } @@ -476,7 +476,7 @@ public class PatioToLlvm { yield context.addInstruction(new LlvmAdd( destination, - context.platformTarget().patioIntType(), + context.target().patioIntType(), patioOperandToLlvmOperand(patioIntAdd.left(), context), patioOperandToLlvmOperand(patioIntAdd.right(), context) )); @@ -490,7 +490,7 @@ public class PatioToLlvm { yield context.addInstruction(new LlvmIcmp( destination, LlvmConditionCode.EQ, - context.platformTarget().patioIntType(), + context.target().patioIntType(), patioOperandToLlvmOperand(patioIntEquals.left(), context), patioOperandToLlvmOperand(patioIntEquals.right(), context) )); @@ -504,7 +504,7 @@ public class PatioToLlvm { yield context.addInstruction(new LlvmIcmp( destination, LlvmConditionCode.NE, - context.platformTarget().patioIntType(), + context.target().patioIntType(), patioOperandToLlvmOperand(patioIntNotEqual.left(), context), patioOperandToLlvmOperand(patioIntNotEqual.right(), context) )); @@ -517,7 +517,7 @@ public class PatioToLlvm { yield context.addInstruction(new LlvmSub( destination, - context.platformTarget().patioIntType(), + context.target().patioIntType(), patioOperandToLlvmOperand(patioIntSub.left(), context), patioOperandToLlvmOperand(patioIntSub.right(), context) )); @@ -530,7 +530,7 @@ public class PatioToLlvm { yield context.addInstruction(new LlvmTrunc( destination, - context.platformTarget().patioIntType(), + context.target().patioIntType(), patioOperandToLlvmOperand(patioIntToBool.value(), context), LlvmTypes.INT_1 )); @@ -543,7 +543,7 @@ public class PatioToLlvm { yield context.addInstruction(new LlvmIntToPtr( destination, - context.platformTarget().patioIntType(), + context.target().patioIntType(), patioOperandToLlvmOperand(patioIntToDataPtr.value(), context) )); } @@ -597,7 +597,7 @@ public class PatioToLlvm { pointer, LlvmTypes.pointer(patioDataLayoutToLlvmType( patioMemoryLoad.layout(), - context.platformTarget() + context.target() )), patioOperandToLlvmOperand(patioMemoryLoad.pointer(), context), patioDataOffsetsToLlvmOffsets(patioMemoryLoad.layout(), patioMemoryLoad.offset()) @@ -608,7 +608,7 @@ public class PatioToLlvm { patioDataOffsetToLlvmType( patioMemoryLoad.layout(), patioMemoryLoad.offset(), - context.platformTarget() + context.target() ), pointer )); @@ -625,7 +625,7 @@ public class PatioToLlvm { pointer, LlvmTypes.pointer(patioDataLayoutToLlvmType( patioMemoryStore.layout(), - context.platformTarget() + context.target() )), patioOperandToLlvmOperand(patioMemoryStore.pointer(), context), patioDataOffsetsToLlvmOffsets(patioMemoryStore.layout(), patioMemoryStore.offset()) @@ -635,7 +635,7 @@ public class PatioToLlvm { patioDataOffsetToLlvmType( patioMemoryStore.layout(), patioMemoryStore.offset(), - context.platformTarget() + context.target() ), patioOperandToLlvmOperand(patioMemoryStore.value(), context), pointer @@ -731,7 +731,7 @@ public class PatioToLlvm { } case PatioThrow throw_ -> { - var throwDeclaration = throwDeclaration(context.platformTarget()); + var throwDeclaration = throwDeclaration(context.target()); context = context.addInstruction(throwDeclaration.call( Optional.empty(), List.of( @@ -782,7 +782,7 @@ public class PatioToLlvm { var setjmpValue = setjmpValueResult.value(); context = setjmpValueResult.context(); - var setjmpDeclaration = setjmpDeclaration(context.platformTarget()); + var setjmpDeclaration = setjmpDeclaration(context.target()); context = context.addInstruction(setjmpDeclaration.call( Optional.of(setjmpValue), List.of(jmpBuf) @@ -835,7 +835,7 @@ public class PatioToLlvm { var exceptionValueTarget = exceptionValueTargetResult.value(); context = exceptionValueTargetResult.context(); - var exceptionValueDeclaration = exceptionValueDeclaration(context.platformTarget()); + var exceptionValueDeclaration = exceptionValueDeclaration(context.target()); branches.add(new Branch( catchBodyStartLabel, @@ -844,7 +844,7 @@ public class PatioToLlvm { restorePreviousExceptionHandlerInstruction, new LlvmLoad( exceptionValueTarget, - exceptionValueType(context.platformTarget()), + exceptionValueType(context.target()), new LlvmVariableGlobal(exceptionValueDeclaration.name()) ) ), @@ -1070,19 +1070,19 @@ public class PatioToLlvm { private static LlvmType patioDataOffsetToLlvmType( PatioDataLayout patioDataLayout, List patioOffsets, - LlvmTarget platformTarget + LlvmTarget target ) { return patioDataOffsetToLlvmType( patioDataLayout, TreePVector.from(patioOffsets), - platformTarget + target ); } private static LlvmType patioDataOffsetToLlvmType( PatioDataLayout patioDataLayout, PVector patioOffsets, - LlvmTarget platformTarget + LlvmTarget target ) { // TODO: check that offset is valid? return switch (patioDataLayout) { @@ -1090,7 +1090,7 @@ public class PatioToLlvm { patioDataOffsetToLlvmType( patioDataLayoutArray.element(), patioOffsets.minus(0), - platformTarget + target ); case PatioDataLayoutBool patioDataLayoutBool -> @@ -1106,13 +1106,13 @@ public class PatioToLlvm { LlvmTypes.pointer(LlvmTypes.VOID); case PatioDataLayoutInt patioDataLayoutInt -> - platformTarget.patioIntType(); + target.patioIntType(); case PatioDataLayoutStruct patioDataLayoutStruct -> patioDataOffsetToLlvmType( patioDataLayoutStruct.elements().get(patioOffsets.get(0)), patioOffsets.minus(0), - platformTarget + target ); }; } @@ -1142,7 +1142,7 @@ public class PatioToLlvm { LlvmTypes.pointer(LlvmTypes.VOID); case PatioInt patioInt -> - context.platformTarget().patioIntType(); + context.target().patioIntType(); case PatioLocalRef patioLocalRef -> context.patioLocalToType(patioLocalRef); @@ -1174,7 +1174,7 @@ public class PatioToLlvm { private static LlvmType patioTypeToLlvmType( PatioType patioType, - LlvmTarget platformTarget + LlvmTarget target ) { return switch (patioType) { case PatioBoolType patioBoolType -> @@ -1190,7 +1190,7 @@ public class PatioToLlvm { LlvmTypes.pointer(LlvmTypes.VOID); case PatioIntType patioIntType -> - platformTarget.patioIntType(); + target.patioIntType(); case PatioVoidType patioVoidType -> LlvmTypes.VOID; @@ -1199,7 +1199,7 @@ public class PatioToLlvm { private static LlvmType patioDataLayoutToLlvmType( PatioDataLayout layout, - LlvmTarget platformTarget + LlvmTarget target ) { return switch (layout) { case PatioDataLayoutArray patioDataLayoutArray -> @@ -1207,7 +1207,7 @@ public class PatioToLlvm { patioDataLayoutArray.size(), patioDataLayoutToLlvmType( patioDataLayoutArray.element(), - platformTarget + target ) ); @@ -1224,12 +1224,12 @@ public class PatioToLlvm { LlvmTypes.pointer(LlvmTypes.VOID); case PatioDataLayoutInt patioDataLayoutInt -> - platformTarget.patioIntType(); + target.patioIntType(); case PatioDataLayoutStruct patioDataLayoutStruct -> LlvmTypes.structure( patioDataLayoutStruct.elements().stream() - .map(element -> patioDataLayoutToLlvmType(element, platformTarget)) + .map(element -> patioDataLayoutToLlvmType(element, target)) .toList() ); }; @@ -1237,19 +1237,19 @@ public class PatioToLlvm { private static LlvmOperand patioDataLayoutToZeroedLlvmOperand( PatioDataLayout layout, - LlvmTarget platformTarget + LlvmTarget target ) { return switch (layout) { case PatioDataLayoutArray patioDataLayoutArray -> new LlvmOperandArray( patioDataLayoutToLlvmType( patioDataLayoutArray.element(), - platformTarget + target ), Lists.repeat( patioDataLayoutToZeroedLlvmOperand( patioDataLayoutArray.element(), - platformTarget + target ), patioDataLayoutArray.size() ) @@ -1274,8 +1274,8 @@ public class PatioToLlvm { new LlvmOperandStructure( patioDataLayoutStruct.elements().stream() .map(element -> new LlvmTypedOperand( - patioDataLayoutToLlvmType(element, platformTarget), - patioDataLayoutToZeroedLlvmOperand(element, platformTarget) + patioDataLayoutToLlvmType(element, target), + patioDataLayoutToZeroedLlvmOperand(element, target) )) .toList() ); @@ -1284,17 +1284,17 @@ public class PatioToLlvm { private static LlvmOperand patioDataValueToLlvmOperand( PatioDataValue value, - LlvmTarget platformTarget + LlvmTarget target ) { return switch (value) { case PatioDataValueArray patioDataValueArray -> { var llvmType = patioDataLayoutToLlvmType( patioDataValueArray.elementLayout(), - platformTarget + target ); var llvmElements = patioDataValueArray.elements().stream() - .map(element -> patioDataValueToLlvmOperand(element, platformTarget)) + .map(element -> patioDataValueToLlvmOperand(element, target)) .toList(); yield new LlvmOperandArray(llvmType, llvmElements); @@ -1316,8 +1316,8 @@ public class PatioToLlvm { new LlvmOperandStructure( patioDataValueStruct.elements().stream() .map(element -> new LlvmTypedOperand( - patioDataLayoutToLlvmType(element.layout(), platformTarget), - patioDataValueToLlvmOperand(element, platformTarget) + patioDataLayoutToLlvmType(element.layout(), target), + patioDataValueToLlvmOperand(element, target) )) .toList() ); @@ -1349,7 +1349,7 @@ public class PatioToLlvm { new LlvmPtrToInt( size, sizePtr, - context.platformTarget().patioIntType() + context.target().patioIntType() ) ) .toResult(size); @@ -1374,7 +1374,7 @@ public class PatioToLlvm { offsetPtr, LlvmTypes.pointer(patioDataLayoutToLlvmType( patioDataLayout, - context.platformTarget() + context.target() )), new LlvmOperandNull(), patioDataOffsetsToLlvmOffsets(patioDataLayout, patioOffset) @@ -1384,7 +1384,7 @@ public class PatioToLlvm { new LlvmPtrToInt( offset, offsetPtr, - context.platformTarget().patioIntType() + context.target().patioIntType() ) ) .toResult(offset); 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 8ec1e6b3..783186ce 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 @@ -61,8 +61,8 @@ class PatioToLlvmFunctionContext { this.loopLabels = loopLabels; } - LlvmTarget platformTarget() { - return this.moduleContext.platformTarget(); + LlvmTarget target() { + return this.moduleContext.target(); } LlvmType functionNameToReturnType(String functionName) { 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 ab0a241f..4077ce6e 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 @@ -9,25 +9,25 @@ public class PatioToLlvmGlobalContext { return new PatioToLlvmGlobalContext(target, P.map()); } - private final LlvmTarget platformTarget; + private final LlvmTarget target; private final PMap exceptionTypeNameToTag; private PatioToLlvmGlobalContext( - LlvmTarget platformTarget, + LlvmTarget target, PMap exceptionTypeNameToTag ) { - this.platformTarget = platformTarget; + this.target = target; this.exceptionTypeNameToTag = exceptionTypeNameToTag; } - public LlvmTarget platformTarget() { - return this.platformTarget; + public LlvmTarget target() { + return this.target; } PatioToLlvmGlobalContext allocateExceptionTag(String exceptionTypeName) { var tag = this.exceptionTypeNameToTag.size() + 1; return new PatioToLlvmGlobalContext( - this.platformTarget, + this.target, this.exceptionTypeNameToTag.plus(exceptionTypeName, tag) ); } 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 6315e0aa..e5cf0dfc 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 @@ -33,13 +33,13 @@ class PatioToLlvmModuleContext { PatioToLlvmGlobalContext.Result toModule() { return this.globalContext.toResult(new LlvmModule( - this.globalContext.platformTarget().targetTriple(), + this.globalContext.target().targetTriple(), this.topLevelEntities )); } - LlvmTarget platformTarget() { - return this.globalContext.platformTarget(); + LlvmTarget target() { + return this.globalContext.target(); } PatioToLlvmModuleContext addFunctionNameToReturnType(String functionName, LlvmType returnType) { 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 f22a5c00..2fd8916f 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java @@ -26,7 +26,7 @@ public class PatioToWasm { public static WasmModule generateCompilationUnit( PatioCompilationUnit patioCompilationUnit, - WasmTarget platformTarget + WasmTarget target ) { var module = WasmModule.EMPTY.addImport(new WasmImport( "env", @@ -34,8 +34,8 @@ public class PatioToWasm { new WasmImportDescriptor.Func( ALLOC_NAME, new WasmFuncType( - List.of(platformTarget.sizeT(), platformTarget.sizeT(), platformTarget.sizeT()), - List.of(platformTarget.dataPointerType()) + List.of(target.sizeT(), target.sizeT(), target.sizeT()), + List.of(target.dataPointerType()) ) ) )); @@ -46,27 +46,27 @@ public class PatioToWasm { new WasmImportDescriptor.Func( STACK_ALLOC_NAME, new WasmFuncType( - List.of(platformTarget.sizeT()), - List.of(platformTarget.dataPointerType()) + List.of(target.sizeT()), + List.of(target.dataPointerType()) ) ) )); - var wasmMemoryBuilder = WasmMemoryBuilder.empty(platformTarget.indexType()); + var wasmMemoryBuilder = WasmMemoryBuilder.empty(target.indexType()); for (var patioCompilationUnitElement : patioCompilationUnit.elements()) { switch (patioCompilationUnitElement) { case PatioDataElementImmutable patioDataElementImmutable -> { wasmMemoryBuilder = wasmMemoryBuilder.add( patioDataElementImmutable.name(), - patioDataValueToBytes(patioDataElementImmutable.value(), platformTarget), + patioDataValueToBytes(patioDataElementImmutable.value(), target), WasmAlignment.ALIGN_32_BIT ).memory(); } case PatioDataElementMutable patioDataElementMutable -> { wasmMemoryBuilder = wasmMemoryBuilder.add( patioDataElementMutable.name(), - patioDataValueToBytes(patioDataElementMutable.initialValue(), platformTarget), + patioDataValueToBytes(patioDataElementMutable.initialValue(), target), WasmAlignment.ALIGN_32_BIT ).memory(); } @@ -75,11 +75,11 @@ public class PatioToWasm { var wasmFuncType = new WasmFuncType( patioFunctionDeclaration.params().stream() - .map(param -> patioTypeToWasmValueType(param.type(), platformTarget)) + .map(param -> patioTypeToWasmValueType(param.type(), target)) .toList(), patioTypeToWasmResultTypes( patioFunctionDeclaration.returnType(), - platformTarget + target ) ); @@ -93,7 +93,7 @@ public class PatioToWasm { module = module.addTag(new WasmTag( WasmTagType.EXCEPTION, patioExceptionTypeDefinition.name(), - List.of(platformTarget.patioIntType()) + List.of(target.patioIntType()) )); } case PatioFunctionDefinition patioFunctionDefinition -> { @@ -103,7 +103,7 @@ public class PatioToWasm { var wasmLocals = new ArrayList(); for (var patioLocal : patioFunctionDefinition.locals()) { - var wasmLocal = patioLocalToWasmLocal(patioLocal, platformTarget); + var wasmLocal = patioLocalToWasmLocal(patioLocal, target); switch (patioLocal.localType()) { case PARAM -> { wasmParams.add(wasmLocal); @@ -116,12 +116,12 @@ public class PatioToWasm { var wasmResultTypes = patioTypeToWasmResultTypes( patioFunctionDefinition.returnType(), - platformTarget + target ); var context = generateInstructions( patioFunctionDefinition.body(), - Context.forFunction(platformTarget, module, Lists.concat(wasmParams, wasmLocals)) + Context.forFunction(target, module, Lists.concat(wasmParams, wasmLocals)) ); module = context.module; @@ -157,28 +157,28 @@ public class PatioToWasm { PatioInstruction patioInstruction, Context context ) { - var platformTarget = context.platformTarget; + var target = context.target; return switch (patioInstruction) { case PatioAllocHeap patioAllocHeap -> { context = context .addInstruction(wasmIntConst( - platformTarget.sizeT(), + target.sizeT(), sizeOf( patioAllocHeap.layout(), - platformTarget + target ) )) .addInstruction(wasmIntConst( - platformTarget.sizeT(), + target.sizeT(), offsetOf( patioAllocHeap.layout(), patioAllocHeap.gcChildrenOffset(), - platformTarget + target ) )) .addInstruction(wasmIntConst( - platformTarget.sizeT(), + target.sizeT(), patioAllocHeap.gcChildrenCount() )) .addInstruction(new WasmCall(new WasmFuncName(ALLOC_NAME))) @@ -190,8 +190,8 @@ public class PatioToWasm { case PatioAllocStack patioAllocStack -> { context = context .addInstruction(wasmIntConst( - platformTarget.sizeT(), - sizeOf(patioAllocStack.layout(), platformTarget) + target.sizeT(), + sizeOf(patioAllocStack.layout(), target) )) .addInstruction(new WasmCall(new WasmFuncName(STACK_ALLOC_NAME))) .addInstruction(new WasmLocalSet(context.wasmLocalIndex(patioAllocStack.destination()))); @@ -205,7 +205,7 @@ public class PatioToWasm { case PatioBoolToInt patioBoolToInt -> { context = generateOperand(patioBoolToInt.value(), context); - if (platformTarget == WasmTarget.WASM64) { + if (target == WasmTarget.WASM64) { context = context.addInstruction(new WasmI64ExtendI32Unsigned()); } @@ -235,7 +235,7 @@ public class PatioToWasm { context = generateOperand(patioCallPointer.functionPointer(), context); - if (context.platformTarget == WasmTarget.WASM64) { + if (context.target == WasmTarget.WASM64) { context = context.addInstruction(new WasmI32WrapI64()); } @@ -285,35 +285,35 @@ public class PatioToWasm { case PatioIntAdd patioIntAdd -> generateBinaryOperation( patioIntAdd, - wasmIntAdd(platformTarget.patioIntType()), + wasmIntAdd(target.patioIntType()), context ); case PatioIntEquals patioIntEquals -> generateBinaryOperation( patioIntEquals, - wasmIntEq(platformTarget.patioIntType()), + wasmIntEq(target.patioIntType()), context ); case PatioIntNotEqual patioIntNotEqual -> generateBinaryOperation( patioIntNotEqual, - wasmIntNe(platformTarget.patioIntType()), + wasmIntNe(target.patioIntType()), context ); case PatioIntSub patioIntSub -> generateBinaryOperation( patioIntSub, - wasmIntSub(platformTarget.patioIntType()), + wasmIntSub(target.patioIntType()), context ); case PatioIntToBool patioIntToBool -> { context = generateOperand(patioIntToBool.value(), context); - if (platformTarget == WasmTarget.WASM64) { + if (target == WasmTarget.WASM64) { context = context.addInstruction(new WasmI32WrapI64()); } @@ -366,7 +366,7 @@ public class PatioToWasm { wasmMemoryArg( patioMemoryLoad.layout(), patioMemoryLoad.offset(), - platformTarget + target ) )); @@ -385,7 +385,7 @@ public class PatioToWasm { wasmMemoryArg( patioMemoryStore.layout(), patioMemoryStore.offset(), - platformTarget + target ) )); @@ -418,10 +418,10 @@ public class PatioToWasm { for (var patioSwitchCase : patioSwitch.cases()) { context = generateOperand(patioSwitch.value(), context); context = context.addInstruction(wasmIntConst( - platformTarget.patioIntType(), + target.patioIntType(), patioSwitchCase.value() )); - context = context.addInstruction(wasmIntEq(platformTarget.patioIntType())); + context = context.addInstruction(wasmIntEq(target.patioIntType())); context = context.enterIfInstruction(wasmBlockType); context = generateBlockBody(patioSwitchCase.body(), context); context = context.enterElse(); @@ -449,7 +449,7 @@ public class PatioToWasm { case PatioTry try_ -> { // TODO: don't assume we always have a Patio int context = context.enterTryInstruction( - new WasmBlockType(List.of(platformTarget.patioIntType())) + new WasmBlockType(List.of(target.patioIntType())) ); context = generateBlockBody(try_.body(), context); @@ -567,7 +567,7 @@ public class PatioToWasm { case PatioDataPtr patioDataPtr -> { var wasmMemoryAddress = new WasmMemoryAddress(patioDataPtr.name()); yield context.addInstruction(new WasmMemoryAddressConst( - context.platformTarget.indexType(), + context.target.indexType(), wasmMemoryAddress )); } @@ -577,7 +577,7 @@ public class PatioToWasm { context = context .addInstruction(new WasmTableElementIndexConst(wasmFuncName)); - if (context.platformTarget == WasmTarget.WASM64) { + if (context.target == WasmTarget.WASM64) { context = context.addInstruction(new WasmI64ExtendI32Unsigned()); } @@ -586,7 +586,7 @@ public class PatioToWasm { case PatioInt patioInt -> context.addInstruction(wasmIntConst( - context.platformTarget.patioIntType(), + context.target.patioIntType(), patioInt.value() )); @@ -597,10 +597,10 @@ public class PatioToWasm { }; } - private static int sizeOf(PatioDataLayout layout, WasmTarget platformTarget) { + private static int sizeOf(PatioDataLayout layout, WasmTarget target) { return switch (layout) { case PatioDataLayoutArray patioDataLayoutArray -> - sizeOf(patioDataLayoutArray.element(), platformTarget) * patioDataLayoutArray.size(); + sizeOf(patioDataLayoutArray.element(), target) * patioDataLayoutArray.size(); case PatioDataLayoutBool patioDataLayoutBool -> 1; @@ -609,17 +609,17 @@ public class PatioToWasm { 1; case PatioDataLayoutDataPointer patioDataLayoutDataPointer -> - platformTarget.dataPointerType().sizeBytes(); + target.dataPointerType().sizeBytes(); case PatioDataLayoutFunctionPointer patioDataLayoutFunctionPointer -> - platformTarget.functionPointerType().sizeBytes(); + target.functionPointerType().sizeBytes(); case PatioDataLayoutInt patioDataLayoutInt -> - platformTarget.patioIntType().sizeBytes(); + target.patioIntType().sizeBytes(); case PatioDataLayoutStruct patioDataLayoutStruct -> patioDataLayoutStruct.elements().stream() - .map(element -> sizeOf(element, platformTarget)) + .map(element -> sizeOf(element, target)) .reduce(0, Integer::sum); }; } @@ -627,14 +627,14 @@ public class PatioToWasm { private static int offsetOf( PatioDataLayout patioDataLayout, List patioOffsets, - WasmTarget platformTarget + WasmTarget target ) { var wasmOffset = 0; for (var patioOffset : patioOffsets) { switch (patioDataLayout) { case PatioDataLayoutArray patioDataLayoutArray -> { - var elementSize = sizeOf(patioDataLayoutArray.element(), platformTarget); + var elementSize = sizeOf(patioDataLayoutArray.element(), target); wasmOffset += elementSize * patioOffset; patioDataLayout = patioDataLayoutArray.element(); } @@ -656,7 +656,7 @@ public class PatioToWasm { case PatioDataLayoutStruct patioDataLayoutStruct -> { for (var i = 0; i < patioOffset; i++) { var element = patioDataLayoutStruct.elements().get(i); - wasmOffset += sizeOf(element, platformTarget); + wasmOffset += sizeOf(element, target); } patioDataLayout = patioDataLayoutStruct.elements().get(patioOffset); } @@ -669,9 +669,9 @@ public class PatioToWasm { private static WasmMemoryArg wasmMemoryArg( PatioDataLayout patioDataLayout, List patioOffsets, - WasmTarget platformTarget + WasmTarget target ) { - var wasmOffset = offsetOf(patioDataLayout, patioOffsets, platformTarget); + var wasmOffset = offsetOf(patioDataLayout, patioOffsets, target); // TODO: alignment return new WasmMemoryArg(wasmOffset, WasmAlignment.NONE); @@ -679,12 +679,12 @@ public class PatioToWasm { private static byte[] patioDataValueToBytes( PatioDataValue value, - WasmTarget platformTarget + WasmTarget target ) { - var bytes = ByteBuffer.allocate(sizeOf(value, platformTarget)); + var bytes = ByteBuffer.allocate(sizeOf(value, target)); bytes.order(ByteOrder.LITTLE_ENDIAN); - patioDataValueToBytes(value, bytes, platformTarget); + patioDataValueToBytes(value, bytes, target); return bytes.array(); } @@ -692,12 +692,12 @@ public class PatioToWasm { private static void patioDataValueToBytes( PatioDataValue value, ByteBuffer bytes, - WasmTarget platformTarget + WasmTarget target ) { switch (value) { case PatioDataValueArray patioDataValueArray -> { for (var element : patioDataValueArray.elements()) { - patioDataValueToBytes(element, bytes, platformTarget); + patioDataValueToBytes(element, bytes, target); } } case PatioDataValueBool patioDataValueBool -> { @@ -710,7 +710,7 @@ public class PatioToWasm { bytes.putInt(0); } case PatioDataValueInt patioDataValueInt -> { - switch (platformTarget) { + switch (target) { case WASM32 -> { bytes.putInt(patioDataValueInt.value()); } @@ -721,21 +721,21 @@ public class PatioToWasm { } case PatioDataValueStruct patioDataValueStruct -> { for (var element : patioDataValueStruct.elements()) { - patioDataValueToBytes(element, bytes, platformTarget); + patioDataValueToBytes(element, bytes, target); } } } } - private static int sizeOf(PatioDataValue value, WasmTarget platformTarget) { - return sizeOf(value.layout(), platformTarget); + private static int sizeOf(PatioDataValue value, WasmTarget target) { + return sizeOf(value.layout(), target); } private static WasmLocal patioLocalToWasmLocal( PatioLocal local, - WasmTarget platformTarget + WasmTarget target ) { - return new WasmLocal(local.name(), patioTypeToWasmValueType(local.type(), platformTarget)); + return new WasmLocal(local.name(), patioTypeToWasmValueType(local.type(), target)); } private static List patioOperandsToWasmValueTypes( @@ -754,13 +754,13 @@ public class PatioToWasm { // TODO: push into PatioOperand? return switch (operand) { case PatioBool patioBool -> - patioTypeToWasmValueType(PatioTypes.BOOL, context.platformTarget); + patioTypeToWasmValueType(PatioTypes.BOOL, context.target); case PatioDataPtr patioDataPtr -> - patioTypeToWasmValueType(PatioTypes.DATA_POINTER, context.platformTarget); + patioTypeToWasmValueType(PatioTypes.DATA_POINTER, context.target); case PatioFunctionPtr patioFunctionPtr -> - patioTypeToWasmValueType(PatioTypes.FUNCTION_POINTER, context.platformTarget); + patioTypeToWasmValueType(PatioTypes.FUNCTION_POINTER, context.target); case PatioInt patioInt -> - patioTypeToWasmValueType(PatioTypes.INT, context.platformTarget); + patioTypeToWasmValueType(PatioTypes.INT, context.target); case PatioLocalRef patioLocalRef -> context.wasmLocalType(patioLocalRef); }; @@ -768,7 +768,7 @@ public class PatioToWasm { private static WasmValueType patioTypeToWasmValueType( PatioType type, - WasmTarget platformTarget + WasmTarget target ) { return switch (type) { case PatioBoolType patioBoolType -> @@ -776,11 +776,11 @@ public class PatioToWasm { case PatioByteType patioByteType -> WasmValueType.I32; case PatioDataPointerType patioDataPointerType -> - platformTarget.dataPointerType(); + target.dataPointerType(); case PatioFunctionPointerType patioFunctionPointerType -> - platformTarget.functionPointerType(); + target.functionPointerType(); case PatioIntType patioIntType -> - platformTarget.patioIntType(); + target.patioIntType(); case PatioVoidType patioVoidType -> throw new IllegalArgumentException("Cannot have void values"); }; @@ -788,11 +788,11 @@ public class PatioToWasm { private static List patioTypeToWasmResultTypes( PatioType type, - WasmTarget platformTarget + WasmTarget target ) { return type instanceof PatioVoidType ? List.of() - : List.of(patioTypeToWasmValueType(type, platformTarget)); + : List.of(patioTypeToWasmValueType(type, target)); } private static WasmInstruction wasmIntConst(WasmValueType wasmValueType, int value) { @@ -879,7 +879,7 @@ public class PatioToWasm { ) {} public static Context forFunction( - WasmTarget platformTarget, + WasmTarget target, WasmModule module, List locals ) { @@ -895,7 +895,7 @@ public class PatioToWasm { } return new Context( - platformTarget, + target, module, P.vector(), P.stack(), @@ -905,7 +905,7 @@ public class PatioToWasm { ); } - private final WasmTarget platformTarget; + private final WasmTarget target; private final WasmModule module; private final PVector instructions; private final PStack> instructionsStack; @@ -914,7 +914,7 @@ public class PatioToWasm { private final PStack structuredInstructionBuilderStack; private Context( - WasmTarget platformTarget, + WasmTarget target, WasmModule module, PVector instructions, PStack> instructionsStack, @@ -922,7 +922,7 @@ public class PatioToWasm { WasmStructuredInstructionBuilder structuredInstructionBuilder, PStack structuredInstructionBuilderStack ) { - this.platformTarget = platformTarget; + this.target = target; this.module = module; this.instructions = instructions; this.instructionsStack = instructionsStack; @@ -933,7 +933,7 @@ public class PatioToWasm { private Context addType(WasmFuncType type) { return new Context( - this.platformTarget, + this.target, this.module.addType(type), this.instructions, this.instructionsStack, @@ -945,7 +945,7 @@ public class PatioToWasm { private Context addInstruction(WasmInstruction instruction) { return new Context( - this.platformTarget, + this.target, this.module, this.instructions.plus(instruction), this.instructionsStack, @@ -966,7 +966,7 @@ public class PatioToWasm { public Context enterBlockInstruction() { return new Context( - this.platformTarget, + this.target, this.module, P.vector(), this.instructionsStack.plus(this.instructions), @@ -987,7 +987,7 @@ public class PatioToWasm { public Context enterLoopInstruction() { return new Context( - this.platformTarget, + this.target, this.module, P.vector(), this.instructionsStack.plus(this.instructions), @@ -1008,7 +1008,7 @@ public class PatioToWasm { public Context enterIfInstruction(WasmBlockType blockType) { return new Context( - this.platformTarget, + this.target, this.module, P.vector(), this.instructionsStack.plus(this.instructions), @@ -1020,7 +1020,7 @@ public class PatioToWasm { public Context enterElse() { return new Context( - this.platformTarget, + this.target, this.module, P.vector(), this.instructionsStack, @@ -1037,7 +1037,7 @@ public class PatioToWasm { public Context enterTryInstruction(WasmBlockType blockType) { return new Context( - this.platformTarget, + this.target, this.module, P.vector(), this.instructionsStack.plus(this.instructions), @@ -1049,7 +1049,7 @@ public class PatioToWasm { public Context enterCatch(WasmTagName tagName) { return new Context( - this.platformTarget, + this.target, this.module, P.vector(), this.instructionsStack, @@ -1066,7 +1066,7 @@ public class PatioToWasm { public Context exitStructuredInstruction() { var context = new Context( - this.platformTarget, + this.target, this.module, this.instructionsStack.get(0), this.instructionsStack.minus(0), -- cgit v1.2.3