Browse Source

PackBitmapIndex: Add util methods and builder to BitmapCommit

Add some utility methods and a builder class for BitmapCommit class in
preparation for improving the memory footprint of GC's bitmap generation
phase.

Change-Id: Ice3d257fc26f3917a65a64eaf53b508b89043caa
Signed-off-by: Yunjie Li <yunjieli@google.com>
master
Yunjie Li 5 years ago
parent
commit
b1d4b45708
  1. 128
      org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/BitmapCommit.java

128
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/BitmapCommit.java

@ -16,13 +16,26 @@ import org.eclipse.jgit.lib.ObjectId;
* A commit object for which a bitmap index should be built.
*/
public final class BitmapCommit extends ObjectId {
private final boolean reuseWalker;
private final int flags;
private final boolean addToIndex;
BitmapCommit(AnyObjectId objectId, boolean reuseWalker, int flags) {
super(objectId);
this.reuseWalker = reuseWalker;
this.flags = flags;
this.addToIndex = false;
}
BitmapCommit(AnyObjectId objectId, boolean reuseWalker, int flags,
boolean addToIndex) {
super(objectId);
this.reuseWalker = reuseWalker;
this.flags = flags;
this.addToIndex = addToIndex;
}
boolean isReuseWalker() {
@ -32,4 +45,119 @@ public final class BitmapCommit extends ObjectId {
int getFlags() {
return flags;
}
/**
* Whether corresponding bitmap should be added to PackBitmapIndexBuilder.
*
* @return true if the corresponding bitmap should be added to
* PackBitmapIndexBuilder.
*/
public boolean isAddToIndex() {
return addToIndex;
}
/**
* Get a builder of BitmapCommit whose object id is {@code objId}.
*
* @param objId
* the object id of the BitmapCommit
* @return a BitmapCommit builder with object id set.
*/
public static Builder newBuilder(AnyObjectId objId) {
return new Builder().setId(objId);
}
/**
* Get a builder of BitmapCommit whose fields are copied from
* {@code commit}.
*
* @param commit
* the bitmap commit the builder is copying from
* @return a BitmapCommit build with fields copied from an existing bitmap
* commit.
*/
public static Builder copyFrom(BitmapCommit commit) {
return new Builder().setId(commit)
.setReuseWalker(commit.isReuseWalker())
.setFlags(commit.getFlags())
.setAddToIndex(commit.isAddToIndex());
}
/**
* Builder of BitmapCommit.
*/
public static class Builder {
private AnyObjectId objectId;
private boolean reuseWalker;
private int flags;
private boolean addToIndex;
// Prevent default constructor.
private Builder() {
}
/**
* Set objectId of the builder.
*
* @param objectId
* the object id of the BitmapCommit
* @return the builder itself
*/
public Builder setId(AnyObjectId objectId) {
this.objectId = objectId;
return this;
}
/**
* Set reuseWalker of the builder.
*
* @param reuseWalker
* whether the BitmapCommit should reuse bitmap walker when
* walking objects
* @return the builder itself
*/
public Builder setReuseWalker(boolean reuseWalker) {
this.reuseWalker = reuseWalker;
return this;
}
/**
* Set flags of the builder.
*
* @param flags
* the flags of the BitmapCommit
* @return the builder itself
*/
public Builder setFlags(int flags) {
this.flags = flags;
return this;
}
/**
* Set whether whether the bitmap of the BitmapCommit should be added to
* PackBitmapIndexBuilder when building bitmap index file.
*
* @param addToIndex
* whether the bitmap of the BitmapCommit should be added to
* PackBitmapIndexBuilder when building bitmap index file
* @return the builder itself
*/
public Builder setAddToIndex(boolean addToIndex) {
this.addToIndex = addToIndex;
return this;
}
/**
* Builds BitmapCommit from the builder.
*
* @return the new BitmapCommit.
*/
public BitmapCommit build() {
return new BitmapCommit(objectId, reuseWalker, flags,
addToIndex);
}
}
}
Loading…
Cancel
Save