]> source.dussan.org Git - jgit.git/commit
Make type and size lazy for large delta objects 42/1042/2
authorShawn O. Pearce <spearce@spearce.org>
Fri, 2 Jul 2010 20:12:06 +0000 (13:12 -0700)
committerShawn O. Pearce <spearce@spearce.org>
Sat, 3 Jul 2010 17:54:29 +0000 (10:54 -0700)
commite4a480f658c165cb3d4a2ba4ed2ba9b3de4b1bf2
tree2241b7e5d5d9642452b2ea3323cedc054fe074d2
parent113577617bc4b2b31f2a44290cc607431c8357a7
Make type and size lazy for large delta objects

Callers don't necessarily need the getSize() result from a large
delta.  They instead should be always using openStream() or copyTo()
for blobs going to local files, or they should be checking the
result of the constant-time isLarge() method to determine the type
of access they can use on the ObjectLoader.  Avoid inflating the
delta instruction stream twice by delaying the decoding of the size
until after we have created the DeltaStream and decoded the header.

Likewise with the type, callers don't necessarily always need it
to be present in an ObjectLoader.  Delay looking at it as late as
we can, thereby avoiding an ugly O(N^2) loop looking up the type
for every single object in the entire delta chain.

Change-Id: I6487b75b52a5d201d811a8baed2fb4fcd6431320
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
org.eclipse.jgit/src/org/eclipse/jgit/storage/file/LargePackedDeltaObject.java
org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackFile.java