aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-18 12:50:06 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-18 12:50:06 +0100
commit7f2f3173cdc7c05c72f71a84e527bfa931b7cd73 (patch)
tree0f0f6279d95ade42d1c2c9af467c9288b25de32e /src/main/java
parenta88e68d099d6c83430b76d581215150c711ffef9 (diff)
Extract globalNameNamespaceInit()
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java6
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerNamespaces.java10
2 files changed, 12 insertions, 4 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 fb0c32ed..498dcadf 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java
@@ -23,7 +23,7 @@ public class LlvmCompiler {
// TODO: remove duplication of definition/declaration
context = context.addTopLevelEntity(new LlvmFunctionDeclaration(
- "shed__namespaceInit__" + String.join("_", main.parts()),
+ LlvmCompilerNamespaces.globalNameNamespaceInit(main),
LlvmCompilerTypes.VALUE_TYPE,
List.of()
));
@@ -40,7 +40,7 @@ public class LlvmCompiler {
mainContext = mainContext.addInstruction(new LlvmCall(
namespace,
LlvmCompilerTypes.VALUE_TYPE,
- new LlvmVariableGlobal("shed__namespaceInit__" + String.join("_", main.parts())),
+ new LlvmVariableGlobal(LlvmCompilerNamespaces.globalNameNamespaceInit(main)),
List.of()
));
@@ -90,7 +90,7 @@ public class LlvmCompiler {
));
var basicBlocks = context.basicBlocks();
var namespaceInitFunction = new LlvmFunctionDefinition(
- "shed__namespaceInit__" + String.join("_", namespaceName.parts()),
+ LlvmCompilerNamespaces.globalNameNamespaceInit(namespaceName),
LlvmCompilerTypes.VALUE_TYPE,
List.of(),
basicBlocks
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 ceb263f5..db60372b 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerNamespaces.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerNamespaces.java
@@ -44,7 +44,15 @@ public class LlvmCompilerNamespaces {
}
private static String globalNameNamespaceValue(NamespaceName namespaceName) {
- return "shed__namespace__" + String.join("_", namespaceName.parts());
+ return "shed__namespace__" + namespaceNameToLlvmIdentifier(namespaceName);
+ }
+
+ public static String globalNameNamespaceInit(NamespaceName namespaceName) {
+ return "shed__namespaceInit__" + namespaceNameToLlvmIdentifier(namespaceName);
+ }
+
+ private static String namespaceNameToLlvmIdentifier(NamespaceName namespaceName) {
+ return String.join("_", namespaceName.parts());
}
public static LlvmGlobalDefinition defineGlobal(