Mercurial > hg4j
comparison src/org/tmatesoft/hg/core/Nodeid.java @ 197:3a7696fb457c
Investigate optimization options to allow fast processing of huge repositories. Fix defect in StatusCollector that lead to wrong result comparing first revision to empty repo (-1 to 0), due to same TIP constant value
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Tue, 19 Apr 2011 03:49:29 +0200 |
| parents | 71ddbf8603e8 |
| children | 4b661efb9374 |
comparison
equal
deleted
inserted
replaced
| 196:e2115da4cf6a | 197:3a7696fb457c |
|---|---|
| 44 * @param shallClone - true if array is subject to future modification and shall be copied, not referenced | 44 * @param shallClone - true if array is subject to future modification and shall be copied, not referenced |
| 45 * @throws IllegalArgumentException if supplied binary representation doesn't correspond to 20 bytes of sha1 digest | 45 * @throws IllegalArgumentException if supplied binary representation doesn't correspond to 20 bytes of sha1 digest |
| 46 */ | 46 */ |
| 47 public Nodeid(byte[] binaryRepresentation, boolean shallClone) { | 47 public Nodeid(byte[] binaryRepresentation, boolean shallClone) { |
| 48 // 5 int fields => 32 bytes | 48 // 5 int fields => 32 bytes |
| 49 // byte[20] => 48 bytes | 49 // byte[20] => 48 bytes (16 bytes is Nodeid with one field, 32 bytes for byte[20] |
| 50 if (binaryRepresentation == null || binaryRepresentation.length != 20) { | 50 if (binaryRepresentation == null || binaryRepresentation.length != 20) { |
| 51 throw new IllegalArgumentException(); | 51 throw new IllegalArgumentException(); |
| 52 } | 52 } |
| 53 this.binaryData = shallClone ? binaryRepresentation.clone() : binaryRepresentation; | 53 /* |
| 54 * byte[].clone() is not reflected when ran with -agentlib:hprof=heap=sites | |
| 55 * thus not to get puzzled why there are N Nodeids and much less byte[] instances, | |
| 56 * may use following code to see N byte[] as well. | |
| 57 * | |
| 58 if (shallClone) { | |
| 59 binaryData = new byte[20]; | |
| 60 System.arraycopy(binaryRepresentation, 0, binaryData, 0, 20); | |
| 61 } else { | |
| 62 binaryData = binaryRepresentation; | |
| 63 } | |
| 64 */ | |
| 65 binaryData = shallClone ? binaryRepresentation.clone() : binaryRepresentation; | |
| 54 } | 66 } |
| 55 | 67 |
| 56 @Override | 68 @Override |
| 57 public int hashCode() { | 69 public int hashCode() { |
| 58 // digest (part thereof) seems to be nice candidate for the hashCode | 70 // digest (part thereof) seems to be nice candidate for the hashCode |
