cut down on balancedtree's memory usage
authorbrian <brian@brianweb.net>
Thu, 3 Jun 2004 21:20:28 +0000 (21:20 +0000)
committerbrian <brian@brianweb.net>
Thu, 3 Jun 2004 21:20:28 +0000 (21:20 +0000)
darcs-hash:20040603212028-24bed-e7bb14306493bdd6b9ac7d76fafd1d688ae9bdd8.gz

src/org/ibex/util/BalancedTree.java

index 82226c2..3e751fd 100644 (file)
@@ -22,6 +22,8 @@ public class BalancedTree {
 
     private int cached_index = -1;
     private int cached_slot = -1;
+    
+    private FinalizationHelper fh;
 
     // Public API //////////////////////////////////////////////////////////////////////////
 
@@ -43,6 +45,7 @@ public class BalancedTree {
         if (root != 0) {
             insert(index, arg, root, 0, false, false);
         } else {
+            if(fh == null) fh = new FinalizationHelper(this);
             root = arg;
             left[arg] = right[arg] = parent[arg] = 0;
             size[arg] = 1;
@@ -140,9 +143,6 @@ public class BalancedTree {
         root = 0;
         }
     }
-    
-    protected void finalize() { clear(); }
-
 
     // Node Data /////////////////////////////////////////////////////////////////////////
 
@@ -389,6 +389,12 @@ public class BalancedTree {
             return slot;
         }
     }
+    
+    static class FinalizationHelper {
+        private BalancedTree bt;
+        FinalizationHelper(BalancedTree bt) { this.bt = bt; }
+        protected void finalize() { bt.clear(); }
+    }
 
     // Debugging ///////////////////////////////////////////////////////////////////////////