[Nice-commit] Nice/src/mlsub/typing/lowlevel BitMatrix.java,1.9,1.10 K0.java,1.26,1.27
Brought to you by:
bonniot
|
From: Arjan B. <ar...@us...> - 2005-03-30 21:24:50
|
Update of /cvsroot/nice/Nice/src/mlsub/typing/lowlevel In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24920/F:/nice/src/mlsub/typing/lowlevel Modified Files: BitMatrix.java K0.java Log Message: Use copy-constructor instead of clone for BitMatrix. Index: K0.java =================================================================== RCS file: /cvsroot/nice/Nice/src/mlsub/typing/lowlevel/K0.java,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** K0.java 29 Mar 2005 22:51:57 -0000 1.26 --- K0.java 30 Mar 2005 21:24:02 -0000 1.27 *************** *** 550,556 **** // put in R and Rt, the constraint saturated under // x < y and y < z => x < z ! R = (BitMatrix)C.clone(); R.closure(); ! Rt = (BitMatrix)Ct.clone(); Rt.closure(); m0 = m = n; --- 550,556 ---- // put in R and Rt, the constraint saturated under // x < y and y < z => x < z ! R = new BitMatrix(C); R.closure(); ! Rt = new BitMatrix(Ct); Rt.closure(); m0 = m = n; *************** *** 1079,1083 **** throws Unsatisfiable { ! BitMatrix T=(BitMatrix)C.clone(); T.closure(); condense(T); --- 1079,1083 ---- throws Unsatisfiable { ! BitMatrix T = new BitMatrix(C); T.closure(); condense(T); *************** *** 1109,1113 **** } } ! BitMatrix Tt = (BitMatrix)Ct.clone(); Tt.closure(); --- 1109,1113 ---- } } ! BitMatrix Tt = new BitMatrix(Ct); Tt.closure(); *************** *** 1157,1161 **** private void prepareConstraint() throws Unsatisfiable { collapseMinimal(); ! BitMatrix leq = (BitMatrix)C.clone(); leq.closure(); computeArrows(leq); --- 1157,1161 ---- private void prepareConstraint() throws Unsatisfiable { collapseMinimal(); ! BitMatrix leq = new BitMatrix(C); leq.closure(); computeArrows(leq); *************** *** 1301,1307 **** public void rigidify() { S.assume(S.a&& hasBeenInitialized); ! R = (BitMatrix)C.clone(); R.closure(); ! Rt = (BitMatrix)Ct.clone(); Rt.closure(); m = n; --- 1301,1307 ---- public void rigidify() { S.assume(S.a&& hasBeenInitialized); ! R = new BitMatrix(C); R.closure(); ! Rt = new BitMatrix(Ct); Rt.closure(); m = n; *************** *** 1356,1360 **** // others can't be modified anyway. if (K0.this.m != K0.this.n) ! this.savedC = (BitMatrix) K0.this.C.clone(); this.savedGarbage = K0.this.garbage.cloneVector(); --- 1356,1360 ---- // others can't be modified anyway. if (K0.this.m != K0.this.n) ! this.savedC = new BitMatrix(K0.this.C); this.savedGarbage = K0.this.garbage.cloneVector(); *************** *** 1654,1660 **** this.simplified = simplified; this.initN = simplified.getLowestSetBit(); ! R = (BitMatrix)C.clone(); R.closure(); ! Rt = (BitMatrix)Ct.clone(); Rt.closure(); --- 1654,1660 ---- this.simplified = simplified; this.initN = simplified.getLowestSetBit(); ! R = new BitMatrix(C); R.closure(); ! Rt = new BitMatrix(Ct); Rt.closure(); Index: BitMatrix.java =================================================================== RCS file: /cvsroot/nice/Nice/src/mlsub/typing/lowlevel/BitMatrix.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** BitMatrix.java 29 Mar 2005 22:51:58 -0000 1.9 --- BitMatrix.java 30 Mar 2005 21:23:58 -0000 1.10 *************** *** 10,14 **** @author Daniel Bonniot (Optimization for sparse and reflexives matrices) **/ ! final public class BitMatrix implements Cloneable { /** * a vector of BitVectors. rows.get(i) is the ith line of --- 10,14 ---- @author Daniel Bonniot (Optimization for sparse and reflexives matrices) **/ ! final public class BitMatrix { /** * a vector of BitVectors. rows.get(i) is the ith line of *************** *** 35,38 **** --- 35,56 ---- /** + * Creates a copy of a matrix + **/ + public BitMatrix(BitMatrix old) { + BitVector[] oldRows = old.rows; + BitVector[] newRows = new BitVector[oldRows.length]; + for (int i = old.size-1; i >= 0; i--) + { + BitVector row = oldRows[i]; + if (row != null && !row.isEmpty()) + newRows[i] = row.cloneVector(); + } + + this.rows = newRows; + this.size = old.size; + this.reflexive = old.reflexive; + } + + /** * Returns the number of rows and columns of this matrix **/ *************** *** 191,196 **** public void closure() { if (S.debug) { ! BitMatrix testcopy = (BitMatrix)this.clone(); ! BitMatrix original = (BitMatrix)this.clone(); this.closure2(); testcopy.closure1(); --- 209,214 ---- public void closure() { if (S.debug) { ! BitMatrix testcopy = new BitMatrix(this); ! BitMatrix original = new BitMatrix(this); this.closure2(); testcopy.closure1(); *************** *** 322,350 **** } - public Object clone() { - try { - BitMatrix m = (BitMatrix)super.clone(); - BitVector[] v = (BitVector[])rows.clone(); - - for (int i = 0; i < size; i++) { - BitVector row = v[i]; - if (row != null) { - if (!row.isEmpty()) - v[i] = row.cloneVector(); - else - v[i] = null; - } - } - m.rows = v; - m.size = size; - m.reflexive = reflexive; - return m; - } catch (CloneNotSupportedException e) { - throw new InternalError - ("Should never happen, since BitMatrix implements Cloneable"); - } - } - - public String toString() { StringBuffer sb = new StringBuffer("{"); --- 340,343 ---- |