diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-18 12:44:24 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-18 12:44:24 +0100 |
| commit | a88e68d099d6c83430b76d581215150c711ffef9 (patch) | |
| tree | 37777dadaeca01e11fb619667b395587ca45ae52 /src/main/java | |
| parent | 340cd24ab948d991c7bb8f062059bf3663c77384 (diff) | |
Extract operandNamespaceValue()
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java | 5 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerNamespaces.java | 11 |
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)) |
