From a88e68d099d6c83430b76d581215150c711ffef9 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 18 Jun 2023 12:44:24 +0100 Subject: Extract operandNamespaceValue() --- .../org/shedlang/compiler/backends/llvm/LlvmCompiler.java | 5 +---- .../compiler/backends/llvm/LlvmCompilerNamespaces.java | 11 +++++++++-- 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'src/main/java') 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)) -- cgit v1.2.3