Mercurial > hg4j
comparison src/org/tmatesoft/hg/internal/RevlogStream.java @ 258:e5776067b3b8
Reduce number of objects instantiated on revlog read
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Tue, 16 Aug 2011 22:08:15 +0200 |
parents | 0e01f9182e16 |
children | 31f67be94e71 |
comparison
equal
deleted
inserted
replaced
257:f39fb6b3cc76 | 258:e5776067b3b8 |
---|---|
20 import static org.tmatesoft.hg.repo.HgRepository.TIP; | 20 import static org.tmatesoft.hg.repo.HgRepository.TIP; |
21 | 21 |
22 import java.io.File; | 22 import java.io.File; |
23 import java.io.IOException; | 23 import java.io.IOException; |
24 import java.util.ArrayList; | 24 import java.util.ArrayList; |
25 import java.util.LinkedList; | |
26 import java.util.List; | 25 import java.util.List; |
27 | 26 |
28 import org.tmatesoft.hg.core.HgBadStateException; | 27 import org.tmatesoft.hg.core.HgBadStateException; |
29 import org.tmatesoft.hg.core.Nodeid; | 28 import org.tmatesoft.hg.core.Nodeid; |
30 import org.tmatesoft.hg.repo.HgRepository; | 29 import org.tmatesoft.hg.repo.HgRepository; |
392 // don't need to clean lastUserData as it's always null when !needData | 391 // don't need to clean lastUserData as it's always null when !needData |
393 i = start; | 392 i = start; |
394 } | 393 } |
395 | 394 |
396 daIndex.seek(getIndexOffsetInt(i)); | 395 daIndex.seek(getIndexOffsetInt(i)); |
396 // | |
397 final ArrayList<PatchRecord> patches = new ArrayList<PatchRecord>(); | |
397 | 398 |
398 for (; i <= end; i++ ) { | 399 for (; i <= end; i++ ) { |
399 if (inline && needData) { | 400 if (inline && needData) { |
400 // inspector reading data (though FilterDataAccess) may have affected index position | 401 // inspector reading data (though FilterDataAccess) may have affected index position |
401 daIndex.seek(getIndexOffsetInt(i)); | 402 daIndex.seek(getIndexOffsetInt(i)); |
441 } | 442 } |
442 } | 443 } |
443 // XXX | 444 // XXX |
444 if (patchToPrevious) { | 445 if (patchToPrevious) { |
445 // this is a patch | 446 // this is a patch |
446 LinkedList<PatchRecord> patches = new LinkedList<PatchRecord>(); | |
447 while (!userDataAccess.isEmpty()) { | 447 while (!userDataAccess.isEmpty()) { |
448 PatchRecord pr = PatchRecord.read(userDataAccess); | 448 PatchRecord pr = PatchRecord.read(userDataAccess); |
449 // System.out.printf("PatchRecord:%d %d %d\n", pr.start, pr.end, pr.len); | 449 // System.out.printf("PatchRecord:%d %d %d\n", pr.start, pr.end, pr.len); |
450 patches.add(pr); | 450 patches.add(pr); |
451 } | 451 } |
452 userDataAccess.done(); | 452 userDataAccess.done(); |
453 // | 453 // |
454 byte[] userData = apply(lastUserData, actualLen, patches); | 454 byte[] userData = apply(lastUserData, actualLen, patches); |
455 patches.clear(); | |
455 userDataAccess = new ByteArrayDataAccess(userData); | 456 userDataAccess = new ByteArrayDataAccess(userData); |
456 } | 457 } |
457 } else { | 458 } else { |
458 if (inline) { | 459 if (inline) { |
459 daIndex.skip(compressedLen); | 460 daIndex.skip(compressedLen); |