Static import OBJ_* constants into PackWriter
Shortens most of the code that touches the objectLists. Change-Id: Ib14d366dd311e544e7ba50e9ce07a6f3ce0cf254
This commit is contained in:
parent
6a5019f539
commit
8e83c36e27
|
@ -46,6 +46,11 @@
|
||||||
|
|
||||||
import static org.eclipse.jgit.internal.storage.pack.StoredObjectRepresentation.PACK_DELTA;
|
import static org.eclipse.jgit.internal.storage.pack.StoredObjectRepresentation.PACK_DELTA;
|
||||||
import static org.eclipse.jgit.internal.storage.pack.StoredObjectRepresentation.PACK_WHOLE;
|
import static org.eclipse.jgit.internal.storage.pack.StoredObjectRepresentation.PACK_WHOLE;
|
||||||
|
import static org.eclipse.jgit.lib.Constants.OBJECT_ID_LENGTH;
|
||||||
|
import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
|
||||||
|
import static org.eclipse.jgit.lib.Constants.OBJ_COMMIT;
|
||||||
|
import static org.eclipse.jgit.lib.Constants.OBJ_TAG;
|
||||||
|
import static org.eclipse.jgit.lib.Constants.OBJ_TREE;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
@ -203,12 +208,12 @@ public static Iterable<PackWriter> getInstances() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private final BlockList<ObjectToPack> objectsLists[] = new BlockList[Constants.OBJ_TAG + 1];
|
private final BlockList<ObjectToPack> objectsLists[] = new BlockList[OBJ_TAG + 1];
|
||||||
{
|
{
|
||||||
objectsLists[Constants.OBJ_COMMIT] = new BlockList<ObjectToPack>();
|
objectsLists[OBJ_COMMIT] = new BlockList<ObjectToPack>();
|
||||||
objectsLists[Constants.OBJ_TREE] = new BlockList<ObjectToPack>();
|
objectsLists[OBJ_TREE] = new BlockList<ObjectToPack>();
|
||||||
objectsLists[Constants.OBJ_BLOB] = new BlockList<ObjectToPack>();
|
objectsLists[OBJ_BLOB] = new BlockList<ObjectToPack>();
|
||||||
objectsLists[Constants.OBJ_TAG] = new BlockList<ObjectToPack>();
|
objectsLists[OBJ_TAG] = new BlockList<ObjectToPack>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private final ObjectIdOwnerMap<ObjectToPack> objectsMap = new ObjectIdOwnerMap<ObjectToPack>();
|
private final ObjectIdOwnerMap<ObjectToPack> objectsMap = new ObjectIdOwnerMap<ObjectToPack>();
|
||||||
|
@ -531,10 +536,10 @@ public long getObjectCount() throws IOException {
|
||||||
if (stats.totalObjects == 0) {
|
if (stats.totalObjects == 0) {
|
||||||
long objCnt = 0;
|
long objCnt = 0;
|
||||||
|
|
||||||
objCnt += objectsLists[Constants.OBJ_COMMIT].size();
|
objCnt += objectsLists[OBJ_COMMIT].size();
|
||||||
objCnt += objectsLists[Constants.OBJ_TREE].size();
|
objCnt += objectsLists[OBJ_TREE].size();
|
||||||
objCnt += objectsLists[Constants.OBJ_BLOB].size();
|
objCnt += objectsLists[OBJ_BLOB].size();
|
||||||
objCnt += objectsLists[Constants.OBJ_TAG].size();
|
objCnt += objectsLists[OBJ_TAG].size();
|
||||||
|
|
||||||
for (CachedPack pack : cachedPacks)
|
for (CachedPack pack : cachedPacks)
|
||||||
objCnt += pack.getObjectCount();
|
objCnt += pack.getObjectCount();
|
||||||
|
@ -807,11 +812,11 @@ public ObjectToPack get(AnyObjectId id) {
|
||||||
* @return ObjectId representing SHA-1 name of a pack that was created.
|
* @return ObjectId representing SHA-1 name of a pack that was created.
|
||||||
*/
|
*/
|
||||||
public ObjectId computeName() {
|
public ObjectId computeName() {
|
||||||
final byte[] buf = new byte[Constants.OBJECT_ID_LENGTH];
|
final byte[] buf = new byte[OBJECT_ID_LENGTH];
|
||||||
final MessageDigest md = Constants.newMessageDigest();
|
final MessageDigest md = Constants.newMessageDigest();
|
||||||
for (ObjectToPack otp : sortByName()) {
|
for (ObjectToPack otp : sortByName()) {
|
||||||
otp.copyRawTo(buf, 0);
|
otp.copyRawTo(buf, 0);
|
||||||
md.update(buf, 0, Constants.OBJECT_ID_LENGTH);
|
md.update(buf, 0, OBJECT_ID_LENGTH);
|
||||||
}
|
}
|
||||||
return ObjectId.fromRaw(md.digest());
|
return ObjectId.fromRaw(md.digest());
|
||||||
}
|
}
|
||||||
|
@ -888,16 +893,16 @@ public void writeBitmapIndex(final OutputStream bitmapIndexStream)
|
||||||
private List<ObjectToPack> sortByName() {
|
private List<ObjectToPack> sortByName() {
|
||||||
if (sortedByName == null) {
|
if (sortedByName == null) {
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
cnt += objectsLists[Constants.OBJ_COMMIT].size();
|
cnt += objectsLists[OBJ_COMMIT].size();
|
||||||
cnt += objectsLists[Constants.OBJ_TREE].size();
|
cnt += objectsLists[OBJ_TREE].size();
|
||||||
cnt += objectsLists[Constants.OBJ_BLOB].size();
|
cnt += objectsLists[OBJ_BLOB].size();
|
||||||
cnt += objectsLists[Constants.OBJ_TAG].size();
|
cnt += objectsLists[OBJ_TAG].size();
|
||||||
|
|
||||||
sortedByName = new BlockList<ObjectToPack>(cnt);
|
sortedByName = new BlockList<ObjectToPack>(cnt);
|
||||||
sortedByName.addAll(objectsLists[Constants.OBJ_COMMIT]);
|
sortedByName.addAll(objectsLists[OBJ_COMMIT]);
|
||||||
sortedByName.addAll(objectsLists[Constants.OBJ_TREE]);
|
sortedByName.addAll(objectsLists[OBJ_TREE]);
|
||||||
sortedByName.addAll(objectsLists[Constants.OBJ_BLOB]);
|
sortedByName.addAll(objectsLists[OBJ_BLOB]);
|
||||||
sortedByName.addAll(objectsLists[Constants.OBJ_TAG]);
|
sortedByName.addAll(objectsLists[OBJ_TAG]);
|
||||||
Collections.sort(sortedByName);
|
Collections.sort(sortedByName);
|
||||||
}
|
}
|
||||||
return sortedByName;
|
return sortedByName;
|
||||||
|
@ -1065,37 +1070,34 @@ public void release() {
|
||||||
|
|
||||||
private void searchForReuse(ProgressMonitor monitor) throws IOException {
|
private void searchForReuse(ProgressMonitor monitor) throws IOException {
|
||||||
long cnt = 0;
|
long cnt = 0;
|
||||||
cnt += objectsLists[Constants.OBJ_COMMIT].size();
|
cnt += objectsLists[OBJ_COMMIT].size();
|
||||||
cnt += objectsLists[Constants.OBJ_TREE].size();
|
cnt += objectsLists[OBJ_TREE].size();
|
||||||
cnt += objectsLists[Constants.OBJ_BLOB].size();
|
cnt += objectsLists[OBJ_BLOB].size();
|
||||||
cnt += objectsLists[Constants.OBJ_TAG].size();
|
cnt += objectsLists[OBJ_TAG].size();
|
||||||
|
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
beginPhase(PackingPhase.FINDING_SOURCES, monitor, cnt);
|
beginPhase(PackingPhase.FINDING_SOURCES, monitor, cnt);
|
||||||
|
|
||||||
if (cnt <= 4096) {
|
if (cnt <= 4096) {
|
||||||
// For small object counts, do everything as one list.
|
// For small object counts, do everything as one list.
|
||||||
BlockList<ObjectToPack> tmp = new BlockList<ObjectToPack>((int) cnt);
|
BlockList<ObjectToPack> tmp = new BlockList<ObjectToPack>((int) cnt);
|
||||||
tmp.addAll(objectsLists[Constants.OBJ_TAG]);
|
tmp.addAll(objectsLists[OBJ_TAG]);
|
||||||
tmp.addAll(objectsLists[Constants.OBJ_COMMIT]);
|
tmp.addAll(objectsLists[OBJ_COMMIT]);
|
||||||
tmp.addAll(objectsLists[Constants.OBJ_TREE]);
|
tmp.addAll(objectsLists[OBJ_TREE]);
|
||||||
tmp.addAll(objectsLists[Constants.OBJ_BLOB]);
|
tmp.addAll(objectsLists[OBJ_BLOB]);
|
||||||
searchForReuse(monitor, tmp);
|
searchForReuse(monitor, tmp);
|
||||||
if (pruneCurrentObjectList) {
|
if (pruneCurrentObjectList) {
|
||||||
// If the list was pruned, we need to re-prune the main lists.
|
// If the list was pruned, we need to re-prune the main lists.
|
||||||
pruneEdgesFromObjectList(objectsLists[Constants.OBJ_COMMIT]);
|
pruneEdgesFromObjectList(objectsLists[OBJ_COMMIT]);
|
||||||
pruneEdgesFromObjectList(objectsLists[Constants.OBJ_TREE]);
|
pruneEdgesFromObjectList(objectsLists[OBJ_TREE]);
|
||||||
pruneEdgesFromObjectList(objectsLists[Constants.OBJ_BLOB]);
|
pruneEdgesFromObjectList(objectsLists[OBJ_BLOB]);
|
||||||
pruneEdgesFromObjectList(objectsLists[Constants.OBJ_TAG]);
|
pruneEdgesFromObjectList(objectsLists[OBJ_TAG]);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
searchForReuse(monitor, objectsLists[Constants.OBJ_TAG]);
|
searchForReuse(monitor, objectsLists[OBJ_TAG]);
|
||||||
searchForReuse(monitor, objectsLists[Constants.OBJ_COMMIT]);
|
searchForReuse(monitor, objectsLists[OBJ_COMMIT]);
|
||||||
searchForReuse(monitor, objectsLists[Constants.OBJ_TREE]);
|
searchForReuse(monitor, objectsLists[OBJ_TREE]);
|
||||||
searchForReuse(monitor, objectsLists[Constants.OBJ_BLOB]);
|
searchForReuse(monitor, objectsLists[OBJ_BLOB]);
|
||||||
}
|
}
|
||||||
|
|
||||||
endPhase(monitor);
|
endPhase(monitor);
|
||||||
stats.timeSearchingForReuse = System.currentTimeMillis() - start;
|
stats.timeSearchingForReuse = System.currentTimeMillis() - start;
|
||||||
}
|
}
|
||||||
|
@ -1116,12 +1118,12 @@ private void searchForDeltas(ProgressMonitor monitor)
|
||||||
// bother examining those types here.
|
// bother examining those types here.
|
||||||
//
|
//
|
||||||
ObjectToPack[] list = new ObjectToPack[
|
ObjectToPack[] list = new ObjectToPack[
|
||||||
objectsLists[Constants.OBJ_TREE].size()
|
objectsLists[OBJ_TREE].size()
|
||||||
+ objectsLists[Constants.OBJ_BLOB].size()
|
+ objectsLists[OBJ_BLOB].size()
|
||||||
+ edgeObjects.size()];
|
+ edgeObjects.size()];
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
cnt = findObjectsNeedingDelta(list, cnt, Constants.OBJ_TREE);
|
cnt = findObjectsNeedingDelta(list, cnt, OBJ_TREE);
|
||||||
cnt = findObjectsNeedingDelta(list, cnt, Constants.OBJ_BLOB);
|
cnt = findObjectsNeedingDelta(list, cnt, OBJ_BLOB);
|
||||||
if (cnt == 0)
|
if (cnt == 0)
|
||||||
return;
|
return;
|
||||||
int nonEdgeCnt = cnt;
|
int nonEdgeCnt = cnt;
|
||||||
|
@ -1408,10 +1410,10 @@ private static void runTasks(ExecutorService pool,
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writeObjects(PackOutputStream out) throws IOException {
|
private void writeObjects(PackOutputStream out) throws IOException {
|
||||||
writeObjects(out, objectsLists[Constants.OBJ_COMMIT]);
|
writeObjects(out, objectsLists[OBJ_COMMIT]);
|
||||||
writeObjects(out, objectsLists[Constants.OBJ_TAG]);
|
writeObjects(out, objectsLists[OBJ_TAG]);
|
||||||
writeObjects(out, objectsLists[Constants.OBJ_TREE]);
|
writeObjects(out, objectsLists[OBJ_TREE]);
|
||||||
writeObjects(out, objectsLists[Constants.OBJ_BLOB]);
|
writeObjects(out, objectsLists[OBJ_BLOB]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writeObjects(PackOutputStream out, List<ObjectToPack> list)
|
private void writeObjects(PackOutputStream out, List<ObjectToPack> list)
|
||||||
|
@ -1986,7 +1988,7 @@ public boolean prepareBitmapIndex(ProgressMonitor pm) throws IOException {
|
||||||
PackWriterBitmapPreparer bitmapPreparer = new PackWriterBitmapPreparer(
|
PackWriterBitmapPreparer bitmapPreparer = new PackWriterBitmapPreparer(
|
||||||
reader, writeBitmaps, pm, stats.interestingObjects);
|
reader, writeBitmaps, pm, stats.interestingObjects);
|
||||||
|
|
||||||
int numCommits = objectsLists[Constants.OBJ_COMMIT].size();
|
int numCommits = objectsLists[OBJ_COMMIT].size();
|
||||||
Collection<PackWriterBitmapPreparer.BitmapCommit> selectedCommits =
|
Collection<PackWriterBitmapPreparer.BitmapCommit> selectedCommits =
|
||||||
bitmapPreparer.doCommitSelection(numCommits);
|
bitmapPreparer.doCommitSelection(numCommits);
|
||||||
|
|
||||||
|
@ -2140,10 +2142,10 @@ public long getDeltaBytes() {
|
||||||
|
|
||||||
{
|
{
|
||||||
objectTypes = new ObjectType[5];
|
objectTypes = new ObjectType[5];
|
||||||
objectTypes[Constants.OBJ_COMMIT] = new ObjectType();
|
objectTypes[OBJ_COMMIT] = new ObjectType();
|
||||||
objectTypes[Constants.OBJ_TREE] = new ObjectType();
|
objectTypes[OBJ_TREE] = new ObjectType();
|
||||||
objectTypes[Constants.OBJ_BLOB] = new ObjectType();
|
objectTypes[OBJ_BLOB] = new ObjectType();
|
||||||
objectTypes[Constants.OBJ_TAG] = new ObjectType();
|
objectTypes[OBJ_TAG] = new ObjectType();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2364,10 +2366,10 @@ private class MutableState {
|
||||||
|
|
||||||
State snapshot() {
|
State snapshot() {
|
||||||
long objCnt = 0;
|
long objCnt = 0;
|
||||||
objCnt += objectsLists[Constants.OBJ_COMMIT].size();
|
objCnt += objectsLists[OBJ_COMMIT].size();
|
||||||
objCnt += objectsLists[Constants.OBJ_TREE].size();
|
objCnt += objectsLists[OBJ_TREE].size();
|
||||||
objCnt += objectsLists[Constants.OBJ_BLOB].size();
|
objCnt += objectsLists[OBJ_BLOB].size();
|
||||||
objCnt += objectsLists[Constants.OBJ_TAG].size();
|
objCnt += objectsLists[OBJ_TAG].size();
|
||||||
// Exclude CachedPacks.
|
// Exclude CachedPacks.
|
||||||
|
|
||||||
long bytesUsed = OBJECT_TO_PACK_SIZE * objCnt;
|
long bytesUsed = OBJECT_TO_PACK_SIZE * objCnt;
|
||||||
|
|
Loading…
Reference in New Issue