summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit
diff options
context:
space:
mode:
authorJonathan Nieder <jrn@google.com>2015-11-03 11:24:02 -0800
committerJonathan Nieder <jrn@google.com>2015-11-05 12:27:28 -0800
commit2a2c2f3373f0a3e76546e7c44ec3afa96d5e6e6f (patch)
treeef71246d23db260cc57bb74564fdfc3c71229ae4 /org.eclipse.jgit
parentb28091e45014bdadc641713da6d5949f0131545e (diff)
downloadjgit-2a2c2f3373f0a3e76546e7c44ec3afa96d5e6e6f.tar.gz
jgit-2a2c2f3373f0a3e76546e7c44ec3afa96d5e6e6f.zip
Use 'reused' bitmap to filter walk during bitmap selection
When building fullBitmap in order to determine which ancestor chain to add this commit to, we were excluding the ancestors of reusedCommits using markUninteresting. This use of markUninteresting is a bit wasteful because we already have a bitmap indicating exactly which commits should be excluded (which can save some walking). Use it. A separate commit will remove the now-redundant markUninteresting call. No behavior change intended (except for performance improvement). Change-Id: I1112641852d72aa05c9a8bd08a552c70342ccedb
Diffstat (limited to 'org.eclipse.jgit')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriterBitmapPreparer.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriterBitmapPreparer.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriterBitmapPreparer.java
index f14e8cc5d2..4df54942a7 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriterBitmapPreparer.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriterBitmapPreparer.java
@@ -265,8 +265,8 @@ class PackWriterBitmapPreparer {
for (AnyObjectId objectId : selectionHelper.reusedCommits) {
rw.markUninteresting(rw.parseCommit(objectId));
}
- rw.setRevFilter(
- PackWriterBitmapWalker.newRevFilter(null, fullBitmap));
+ rw.setRevFilter(PackWriterBitmapWalker.newRevFilter(
+ selectionHelper.reusedCommitsBitmap, fullBitmap));
while (rw.next() != null) {
// The RevFilter adds the reachable commits from this
@@ -464,7 +464,7 @@ class PackWriterBitmapPreparer {
}
return new CommitSelectionHelper(peeledWant, commits, pos,
- orderedTipCommitBitmaps, reuseCommits);
+ orderedTipCommitBitmaps, reuse, reuseCommits);
}
/*-
@@ -565,6 +565,8 @@ class PackWriterBitmapPreparer {
private static final class CommitSelectionHelper implements Iterable<RevCommit> {
final Set<? extends ObjectId> peeledWants;
final List<BitmapBuilderEntry> tipCommitBitmaps;
+
+ final BitmapBuilder reusedCommitsBitmap;
final Iterable<BitmapCommit> reusedCommits;
final RevCommit[] commitsByOldest;
final int commitStartPos;
@@ -572,11 +574,13 @@ class PackWriterBitmapPreparer {
CommitSelectionHelper(Set<? extends ObjectId> peeledWant,
RevCommit[] commitsByOldest, int commitStartPos,
List<BitmapBuilderEntry> bitmapEntries,
+ BitmapBuilder reusedCommitsBitmap,
Iterable<BitmapCommit> reuse) {
this.peeledWants = peeledWant;
this.commitsByOldest = commitsByOldest;
this.commitStartPos = commitStartPos;
this.tipCommitBitmaps = bitmapEntries;
+ this.reusedCommitsBitmap = reusedCommitsBitmap;
this.reusedCommits = reuse;
}