From 413ad79ca75bb508ac2b6b333571f08f3d21c8a8 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 20 Jul 2023 18:32:51 +0100 Subject: Add data-ptr-get instruction --- .../org/shedlang/compiler/patio/ast/PatioSerializer.java | 7 +++++++ .../compiler/patio/ast/instructions/PatioDataPtrGet.java | 14 ++++++++++++++ .../compiler/patio/ast/instructions/PatioInstruction.java | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioDataPtrGet.java (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java index c865cd71..0e26ef08 100644 --- a/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java +++ b/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java @@ -123,6 +123,13 @@ public class PatioSerializer { ) ); + case PatioDataPtrGet dataPtrGet -> + treeList( + treeIdentifier("data-ptr-get"), + localRefToTree(dataPtrGet.target()), + treeString(dataPtrGet.name()) + ); + case PatioDataPtrToInt dataPtrToInt -> treeList( treeIdentifier("data-ptr-to-int"), diff --git a/src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioDataPtrGet.java b/src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioDataPtrGet.java new file mode 100644 index 00000000..ec9451b3 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioDataPtrGet.java @@ -0,0 +1,14 @@ +package org.shedlang.compiler.patio.ast.instructions; + +import org.shedlang.compiler.patio.ast.PatioLocalRef; +import org.shedlang.compiler.sources.Source; + +/** + * Store a pointer to the data element with the given name in the target local. + */ +public record PatioDataPtrGet( + PatioLocalRef target, + String name, + Source source +) implements PatioInstruction { +} diff --git a/src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioInstruction.java b/src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioInstruction.java index 28fadebe..88b47962 100644 --- a/src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioInstruction.java +++ b/src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioInstruction.java @@ -2,6 +2,6 @@ package org.shedlang.compiler.patio.ast.instructions; import org.shedlang.compiler.sources.Source; -public sealed interface PatioInstruction permits PatioAlloc, PatioCallPointer, PatioDataPtrToInt, PatioFunctionPointerGet, PatioIf, PatioIntAdd, PatioIntGet, PatioIntToDataPtr, PatioLocalCopy, PatioMemoryLoad, PatioMemoryStore, PatioReturn { +public sealed interface PatioInstruction permits PatioAlloc, PatioCallPointer, PatioDataPtrGet, PatioDataPtrToInt, PatioFunctionPointerGet, PatioIf, PatioIntAdd, PatioIntGet, PatioIntToDataPtr, PatioLocalCopy, PatioMemoryLoad, PatioMemoryStore, PatioReturn { Source source(); } -- cgit v1.2.3