diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-18 19:06:01 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-18 19:06:01 +0100 |
| commit | cdd6065a224cdc623eda83106d6d167504de4f67 (patch) | |
| tree | e697614ba4f54d6c3f35cecd450a60694a81dd28 /src/main/java | |
| parent | b1768b7d309921ac82bd5abd8327839f8d594b10 (diff) | |
Use definition order for LLVM top level entities
Diffstat (limited to 'src/main/java')
3 files changed, 10 insertions, 9 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 4098bd7a..c9d8c8ee 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java @@ -53,7 +53,7 @@ public class LlvmCompiler { mainBasicBlocks )); - return new LlvmModule(context.topLevelEntities().stream().toList()); + return new LlvmModule(context.topLevelEntities()); } public static LlvmModule compileNamespace( @@ -68,7 +68,7 @@ public class LlvmCompiler { context = LlvmCompilerNamespaces.define(namespaceName, context); - var topLevelEntities = context.topLevelEntities().stream().toList(); + var topLevelEntities = context.topLevelEntities(); return new LlvmModule(topLevelEntities); } diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java index 32b96e25..e884d9e8 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java @@ -14,7 +14,6 @@ import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmVariableLocal; import org.shedlang.compiler.typechecker.TypeInfo; import org.shedlang.compiler.util.POrderedMap; -import java.util.Collection; import java.util.List; import java.util.Optional; @@ -167,8 +166,8 @@ public record LlvmCompilerContext( return topLevelEntitiesByName.containsKey(name); } - public Collection<LlvmTopLevelEntity> topLevelEntities() { - return topLevelEntitiesByName.values(); + public List<LlvmTopLevelEntity> topLevelEntities() { + return topLevelEntitiesByName.toValues(); } public LlvmCompilerResult<LlvmVariableLocal> generateVariableLocal( @@ -225,7 +224,7 @@ public record LlvmCompilerContext( locals, basicBlocks, instructions, - topLevelEntitiesByName.plusAll(functionContext.topLevelEntitiesByName), + functionContext.topLevelEntitiesByName, localVariableNames ).toResult(functionContext.basicBlocks); } diff --git a/src/main/java/org/shedlang/compiler/util/POrderedMap.java b/src/main/java/org/shedlang/compiler/util/POrderedMap.java index 71150430..9363d42e 100644 --- a/src/main/java/org/shedlang/compiler/util/POrderedMap.java +++ b/src/main/java/org/shedlang/compiler/util/POrderedMap.java @@ -4,7 +4,7 @@ import org.pcollections.Empty; import org.pcollections.PMap; import org.pcollections.PVector; -import java.util.Collection; +import java.util.List; public class POrderedMap<K, V> { public static <K, V> POrderedMap<K, V> empty() { @@ -42,8 +42,10 @@ public class POrderedMap<K, V> { return keys; } - public Collection<V> values() { - return map.values(); + public List<V> toValues() { + return keys.stream() + .map(key -> map.get(key)) + .toList(); } public int size() { |
