diff options
author | gdkchan <gab.dark.100@gmail.com> | 2020-02-17 18:30:54 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-17 22:30:54 +0100 |
commit | e5f78fb1d44b825ee9195660f4387680055137dc (patch) | |
tree | 59cfa56dc046bd27aa1d7e9d7b0840ffafd9f601 /ARMeilleure/CodeGen/Optimizations/Optimizer.cs | |
parent | e9a37ca6a85346c05149deac916dc90de43ad240 (diff) |
Replace LinkedList by IntrusiveList to avoid allocations on JIT (#931)
* Replace LinkedList by IntrusiveList to avoid allocations on JIT
* Fix wrong replacements
Diffstat (limited to 'ARMeilleure/CodeGen/Optimizations/Optimizer.cs')
-rw-r--r-- | ARMeilleure/CodeGen/Optimizations/Optimizer.cs | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/ARMeilleure/CodeGen/Optimizations/Optimizer.cs b/ARMeilleure/CodeGen/Optimizations/Optimizer.cs index c01a8f1e..e3117d1f 100644 --- a/ARMeilleure/CodeGen/Optimizations/Optimizer.cs +++ b/ARMeilleure/CodeGen/Optimizations/Optimizer.cs @@ -16,17 +16,17 @@ namespace ARMeilleure.CodeGen.Optimizations { modified = false; - foreach (BasicBlock block in cfg.Blocks) + for (BasicBlock block = cfg.Blocks.First; block != null; block = block.ListNext) { - LinkedListNode<Node> node = block.Operations.First; + Node node = block.Operations.First; while (node != null) { - LinkedListNode<Node> nextNode = node.Next; + Node nextNode = node.ListNext; - bool isUnused = IsUnused(node.Value); + bool isUnused = IsUnused(node); - if (!(node.Value is Operation operation) || isUnused) + if (!(node is Operation operation) || isUnused) { if (isUnused) { @@ -80,13 +80,11 @@ namespace ARMeilleure.CodeGen.Optimizations } } - private static void RemoveNode(BasicBlock block, LinkedListNode<Node> llNode) + private static void RemoveNode(BasicBlock block, Node node) { // Remove a node from the nodes list, and also remove itself // from all the use lists on the operands that this node uses. - block.Operations.Remove(llNode); - - Node node = llNode.Value; + block.Operations.Remove(node); for (int index = 0; index < node.SourcesCount; index++) { |