]> source.dussan.org Git - jgit.git/commitdiff
Use int[] rather than IntList for RawText hashes 98/1498/1
authorShawn O. Pearce <spearce@spearce.org>
Wed, 1 Sep 2010 23:54:20 +0000 (16:54 -0700)
committerShawn O. Pearce <spearce@spearce.org>
Wed, 1 Sep 2010 23:54:20 +0000 (16:54 -0700)
We know exactly how many lines we need by the time we compute our
per-line hashes, as we have already built the lines IntList to give
us the starting position of each line in the buffer.  Using that
we can properly size the array, and don't need the dynamic growing
feature of IntList.  So drop the indirection and just use a fixed
size array.

Change-Id: I5c8c592514692a8abff51e5928aedcf71e100365
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
org.eclipse.jgit/src/org/eclipse/jgit/diff/RawText.java
org.eclipse.jgit/src/org/eclipse/jgit/diff/RawTextIgnoreAllWhitespace.java
org.eclipse.jgit/src/org/eclipse/jgit/diff/RawTextIgnoreLeadingWhitespace.java
org.eclipse.jgit/src/org/eclipse/jgit/diff/RawTextIgnoreTrailingWhitespace.java
org.eclipse.jgit/src/org/eclipse/jgit/diff/RawTextIgnoreWhitespaceChange.java

index 4befe586c3ff053f96be3bf642bda6c9f45e2622..ad81de58c9a045fb3a49a8433b266f51bba7c657 100644 (file)
@@ -95,7 +95,7 @@ public class RawText implements Sequence {
        protected final IntList lines;
 
        /** Hash code for each line, for fast equality elimination. */
-       protected final IntList hashes;
+       protected final int[] hashes;
 
        /**
         * Create a new sequence from an existing content byte array.
@@ -140,7 +140,7 @@ public class RawText implements Sequence {
 
        private static boolean equals(final RawText a, final int ai,
                        final RawText b, final int bi) {
-               if (a.hashes.get(ai) != b.hashes.get(bi))
+               if (a.hashes[ai] != b.hashes[bi])
                        return false;
 
                int as = a.lines.get(ai);
@@ -197,15 +197,13 @@ public class RawText implements Sequence {
                return content[end - 1] != '\n';
        }
 
-       private IntList computeHashes() {
-               final IntList r = new IntList(lines.size());
-               r.add(0);
+       private int[] computeHashes() {
+               final int[] r = new int[lines.size()];
                for (int lno = 1; lno < lines.size() - 1; lno++) {
                        final int ptr = lines.get(lno);
                        final int end = lines.get(lno + 1);
-                       r.add(hashLine(content, ptr, end));
+                       r[lno] = hashLine(content, ptr, end);
                }
-               r.add(0);
                return r;
        }
 
index 211618a3fb66d4f2fb32287ac4dfdab596330992..855a8724287c29f2c294791aec939c7e7e002c1e 100644 (file)
@@ -79,7 +79,7 @@ public class RawTextIgnoreAllWhitespace extends RawText {
 
        private static boolean equals(final RawText a, final int ai,
                        final RawText b, final int bi) {
-               if (a.hashes.get(ai) != b.hashes.get(bi))
+               if (a.hashes[ai] != b.hashes[bi])
                        return false;
 
                int as = a.lines.get(ai);
index 23778973b701fed2a4a6b706074b7c2ab6026ee7..df4805a4c8d36839d09916537751c10e678bbde2 100644 (file)
@@ -78,7 +78,7 @@ public class RawTextIgnoreLeadingWhitespace extends RawText {
 
        private static boolean equals(final RawText a, final int ai,
                        final RawText b, final int bi) {
-               if (a.hashes.get(ai) != b.hashes.get(bi))
+               if (a.hashes[ai] != b.hashes[bi])
                        return false;
 
                int as = a.lines.get(ai);
index 3feb2e783acfbc6f6b85f4a6e4d1009bbb77ec2d..5e69eaabd764bf2e0dd7e8f8a05ee9eae14faa87 100644 (file)
@@ -78,7 +78,7 @@ public class RawTextIgnoreTrailingWhitespace extends RawText {
 
        private static boolean equals(final RawText a, final int ai,
                        final RawText b, final int bi) {
-               if (a.hashes.get(ai) != b.hashes.get(bi))
+               if (a.hashes[ai] != b.hashes[bi])
                        return false;
 
                int as = a.lines.get(ai);
index e6bd8e98b792357c689de14262113db257d735bc..2d1b9772fee2d123295e42a51ebba5d66c501b6a 100644 (file)
@@ -81,7 +81,7 @@ public class RawTextIgnoreWhitespaceChange extends RawText {
 
        private static boolean equals(final RawText a, final int ai,
                        final RawText b, final int bi) {
-               if (a.hashes.get(ai) != b.hashes.get(bi))
+               if (a.hashes[ai] != b.hashes[bi])
                        return false;
 
                int as = a.lines.get(ai);