diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-01-28 19:49:37 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-01-28 19:49:37 +0000 |
| commit | 6cd133fc114b2f88497579e8ef4ef629697dbd26 (patch) | |
| tree | 9634cbc64672177e3281f0205b2e8eefa831eb47 /src/main/java | |
| parent | 469d79fa4b10036bff600c50fdc8e302014653df (diff) | |
Replace PatioDataValueDataPointerNull with PatioDataValuedataPointer
Diffstat (limited to 'src/main/java')
7 files changed, 28 insertions, 15 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 3d00e595..7f7a8ba4 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 @@ -1302,7 +1302,7 @@ public class PatioToLlvm { case PatioDataValueByte patioDataValueByte -> new LlvmOperandInt(patioDataValueByte.value()); - case PatioDataValueDataPointerNull patioDataValueDataPointerNull -> + case PatioDataValueDataPointer patioDataValueDataPointer -> new LlvmOperandNull(); case PatioDataValueInt patioDataValueInt -> 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 cea0c295..4070b25e 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java @@ -725,8 +725,15 @@ public class PatioToWasm { case PatioDataValueByte patioDataValueByte -> { bytes.put(patioDataValueByte.value()); } - case PatioDataValueDataPointerNull patioDataValueDataPointerNull -> { - bytes.putInt(0); + case PatioDataValueDataPointer patioDataValueDataPointer -> { + switch (patioDataValueDataPointer.value()) { + case PatioDataPtrValueDataElement dataElement -> { + throw new UnsupportedOperationException("TODO"); + } + case PatioDataPtrValueNull null_ -> { + bytes.putInt(0); + } + }; } case PatioDataValueInt patioDataValueInt -> { var intValue = generateIntValue(patioDataValueInt.value(), target); diff --git a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java index c3aea9ae..6d60adfd 100644 --- a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java +++ b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java @@ -540,8 +540,11 @@ public class PatioSerializer { treeIdentifier(String.format("0x%02x", byte_.value())) ); - case PatioDataValueDataPointerNull dataPointerNull -> - treeList(treeIdentifier("data-ptr"), treeIdentifier("null")); + case PatioDataValueDataPointer dataPointer -> + treeList( + treeIdentifier("data-ptr"), + dataPtrValueToTree(dataPointer.value()) + ); case PatioDataValueInt int_ -> treeList( 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 88873189..6423e844 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, PatioDataValueInt32, PatioDataValueStruct { +public sealed interface PatioDataValue permits PatioDataValueArray, PatioDataValueBool, PatioDataValueByte, PatioDataValueDataPointer, PatioDataValueInt, PatioDataValueInt32, PatioDataValueStruct { PatioDataLayout layout(); } diff --git a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointer.java b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointer.java new file mode 100644 index 00000000..8f4a8345 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointer.java @@ -0,0 +1,10 @@ +package org.shedlang.compiler.patio.types; + +import org.shedlang.compiler.patio.values.PatioDataPtrValue; + +public record PatioDataValueDataPointer(PatioDataPtrValue value) implements PatioDataValue { + @Override + public PatioDataLayout layout() { + return PatioDataLayouts.DATA_POINTER; + } +} diff --git a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointerNull.java b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointerNull.java deleted file mode 100644 index 214ee35d..00000000 --- a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointerNull.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.shedlang.compiler.patio.types; - -public record PatioDataValueDataPointerNull() implements PatioDataValue { - @Override - public PatioDataLayout layout() { - return PatioDataLayouts.DATA_POINTER; - } -} 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 b70d0c40..731fa340 100644 --- a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValues.java +++ b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValues.java @@ -1,5 +1,6 @@ package org.shedlang.compiler.patio.types; +import org.shedlang.compiler.patio.values.PatioDataPtrValueNull; import org.shedlang.compiler.patio.values.PatioIntValueLiteral; import java.util.List; @@ -23,7 +24,7 @@ public class PatioDataValues { } public static PatioDataValue dataPointerNull() { - return new PatioDataValueDataPointerNull(); + return new PatioDataValueDataPointer(new PatioDataPtrValueNull()); } public static PatioDataValue int_(int value) { |
