From 6cd133fc114b2f88497579e8ef4ef629697dbd26 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 28 Jan 2024 19:49:37 +0000 Subject: Replace PatioDataValueDataPointerNull with PatioDataValuedataPointer --- .../shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java | 2 +- .../java/org/shedlang/compiler/backends/wasm/PatioToWasm.java | 11 +++++++++-- .../java/org/shedlang/compiler/patio/PatioSerializer.java | 7 +++++-- .../org/shedlang/compiler/patio/types/PatioDataValue.java | 2 +- .../compiler/patio/types/PatioDataValueDataPointer.java | 10 ++++++++++ .../compiler/patio/types/PatioDataValueDataPointerNull.java | 8 -------- .../org/shedlang/compiler/patio/types/PatioDataValues.java | 3 ++- 7 files changed, 28 insertions(+), 15 deletions(-) create mode 100644 src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointer.java delete mode 100644 src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointerNull.java (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 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) { -- cgit v1.2.3