aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-18 12:44:24 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-18 12:44:24 +0100
commita88e68d099d6c83430b76d581215150c711ffef9 (patch)
tree37777dadaeca01e11fb619667b395587ca45ae52 /src/main/java
parent340cd24ab948d991c7bb8f062059bf3663c77384 (diff)
Extract operandNamespaceValue()
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java5
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerNamespaces.java11
2 files changed, 10 insertions, 6 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java
index db0be392..fb0c32ed 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java
@@ -86,10 +86,7 @@ public class LlvmCompiler {
context = context.addTerminatorInstruction(new LlvmReturn(
LlvmCompilerTypes.VALUE_TYPE,
- new LlvmOperandPtrToInt(
- LlvmCompilerNamespaces.operandNamespaceValue(namespaceName),
- LlvmCompilerTypes.VALUE_TYPE
- )
+ LlvmCompilerNamespaces.operandNamespaceValue(namespaceName)
));
var basicBlocks = context.basicBlocks();
var namespaceInitFunction = new LlvmFunctionDefinition(
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerNamespaces.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerNamespaces.java
index 8b4c7622..ceb263f5 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerNamespaces.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerNamespaces.java
@@ -32,7 +32,14 @@ public class LlvmCompilerNamespaces {
));
}
- public static LlvmVariableGlobal operandNamespaceValue(NamespaceName namespaceName) {
+ public static LlvmOperand operandNamespaceValue(NamespaceName namespaceName) {
+ return new LlvmOperandPtrToInt(
+ LlvmCompilerNamespaces.operandNamespaceStruct(namespaceName),
+ LlvmCompilerTypes.VALUE_TYPE
+ );
+ }
+
+ public static LlvmOperand operandNamespaceStruct(NamespaceName namespaceName) {
return new LlvmVariableGlobal(globalNameNamespaceValue(namespaceName));
}
@@ -79,7 +86,7 @@ public class LlvmCompilerNamespaces {
return context.addInstruction(new LlvmGetElementPtr(
fieldPointer,
typeNamespacePointer(namespaceTypeInfo),
- operandNamespaceValue(namespaceName),
+ operandNamespaceStruct(namespaceName),
List.of(
LlvmTypedOperand.arrayIndex(0),
LlvmTypedOperand.structureIndex(namespaceTypeInfo.fieldIndex(fieldName))