[vala/staging] vala: Avoid and break some cyclic references in BasicBlock



commit 78773f8b2da03b97b174bc2afd6f8fea31dfa7ab
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Thu Apr 5 08:21:23 2018 +0200

    vala: Avoid and break some cyclic references in BasicBlock
    
    https://bugzilla.gnome.org/show_bug.cgi?id=794979

 vala/valabasicblock.vala |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)
---
diff --git a/vala/valabasicblock.vala b/vala/valabasicblock.vala
index f1c3ea8..440e7db 100644
--- a/vala/valabasicblock.vala
+++ b/vala/valabasicblock.vala
@@ -34,7 +34,7 @@ public class Vala.BasicBlock {
        private List<BasicBlock> successors = new ArrayList<BasicBlock> ();
 
        // dominator tree
-       public BasicBlock parent { get; private set; }
+       public weak BasicBlock parent { get; private set; }
        List<BasicBlock> children = new ArrayList<BasicBlock> ();
        Set<BasicBlock> df = new HashSet<BasicBlock> ();
 
@@ -61,6 +61,9 @@ public class Vala.BasicBlock {
        }
 
        public void connect (BasicBlock target) {
+               if (target == this) {
+                       return;
+               }
                if (!successors.contains (target)) {
                        successors.add (target);
                }
@@ -78,6 +81,9 @@ public class Vala.BasicBlock {
        }
 
        public void add_child (BasicBlock block) {
+               if (block == this) {
+                       return;
+               }
                children.add (block);
                block.parent = this;
        }
@@ -87,6 +93,9 @@ public class Vala.BasicBlock {
        }
 
        public void add_dominator_frontier (BasicBlock block) {
+               if (block == this) {
+                       return;
+               }
                df.add (block);
        }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]