diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-01-26 18:52:00 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-01-27 00:29:08 +0000 |
| commit | fa664754ddf04071414d2d103402b0028af681c1 (patch) | |
| tree | ca6fd7291bd6733df41f9befd50c55c8361a789f /src/main/java | |
| parent | e4b51902a72b08a9feddbcd527550ddde08ecc9b (diff) | |
Add Patio int32 data value
Diffstat (limited to 'src/main/java')
6 files changed, 28 insertions, 1 deletions
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 01b9ca18..da6edbea 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 @@ -1315,6 +1315,9 @@ public class PatioToLlvm { case PatioDataValueInt patioDataValueInt -> patioIntValueToLlvmOperand(patioDataValueInt.value(), target); + case PatioDataValueInt32 patioDataValueInt32 -> + patioIntValueToLlvmOperand(patioDataValueInt32.value(), target); + case PatioDataValueStruct patioDataValueStruct -> new LlvmOperandStructure( patioDataValueStruct.elements().stream() 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 e15cdc23..c6ec5136 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java @@ -717,6 +717,10 @@ public class PatioToWasm { } } } + case PatioDataValueInt32 patioDataValueInt32 -> { + var intValue = generateIntValue(patioDataValueInt32.value(), target); + bytes.putInt(intValue); + } case PatioDataValueStruct patioDataValueStruct -> { for (var element : patioDataValueStruct.elements()) { patioDataValueToBytes(element, bytes, target); diff --git a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java index 9e208b2c..dc7f7c20 100644 --- a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java +++ b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java @@ -533,6 +533,12 @@ public class PatioSerializer { intValueToTree(int_.value()) ); + case PatioDataValueInt32 int32 -> + treeList( + treeIdentifier("int32"), + intValueToTree(int32.value()) + ); + case PatioDataValueStruct struct -> treeList( treeIdentifier("struct"), diff --git a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValue.java b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValue.java index 8f3056a6..88873189 100644 --- a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValue.java +++ b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValue.java @@ -1,5 +1,5 @@ package org.shedlang.compiler.patio.types; -public sealed interface PatioDataValue permits PatioDataValueArray, PatioDataValueBool, PatioDataValueByte, PatioDataValueDataPointerNull, PatioDataValueInt, PatioDataValueStruct { +public sealed interface PatioDataValue permits PatioDataValueArray, PatioDataValueBool, PatioDataValueByte, PatioDataValueDataPointerNull, PatioDataValueInt, PatioDataValueInt32, PatioDataValueStruct { PatioDataLayout layout(); } diff --git a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueInt32.java b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueInt32.java new file mode 100644 index 00000000..2206972e --- /dev/null +++ b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueInt32.java @@ -0,0 +1,10 @@ +package org.shedlang.compiler.patio.types; + +import org.shedlang.compiler.patio.values.PatioIntValue; + +public record PatioDataValueInt32(PatioIntValue value) implements PatioDataValue { + @Override + public PatioDataLayout layout() { + return PatioDataLayouts.INT32; + } +} diff --git a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValues.java b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValues.java index 621489b7..b70d0c40 100644 --- a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValues.java +++ b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValues.java @@ -30,6 +30,10 @@ public class PatioDataValues { return new PatioDataValueInt(new PatioIntValueLiteral(value)); } + public static PatioDataValue int32(int value) { + return new PatioDataValueInt32(new PatioIntValueLiteral(value)); + } + public static PatioDataValue struct(List<PatioDataValue> elements) { return new PatioDataValueStruct(elements); } |
