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>
tags/v5.8.0.202006091008-r
Yunjie Li 4 years ago
parent
commit
b1d4b45708

+ 128
- 0
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/BitmapCommit.java View File

* A commit object for which a bitmap index should be built. * A commit object for which a bitmap index should be built.
*/ */
public final class BitmapCommit extends ObjectId { public final class BitmapCommit extends ObjectId {

private final boolean reuseWalker; private final boolean reuseWalker;

private final int flags; private final int flags;


private final boolean addToIndex;

BitmapCommit(AnyObjectId objectId, boolean reuseWalker, int flags) { BitmapCommit(AnyObjectId objectId, boolean reuseWalker, int flags) {
super(objectId); super(objectId);
this.reuseWalker = reuseWalker; this.reuseWalker = reuseWalker;
this.flags = flags; 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() { boolean isReuseWalker() {
int getFlags() { int getFlags() {
return flags; 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