Mercurial > jhg
comparison src/org/tmatesoft/hg/internal/ByteArrayDataAccess.java @ 599:55b7987c1796
Do not instantiate intermediate arrays
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Fri, 03 May 2013 15:29:26 +0200 |
parents | 6c22bdc0bdfd |
children | 46b56864b483 |
comparison
equal
deleted
inserted
replaced
598:d29d9dc6c128 | 599:55b7987c1796 |
---|---|
52 @Override | 52 @Override |
53 public void readBytes(byte[] buf, int off, int len) throws IOException { | 53 public void readBytes(byte[] buf, int off, int len) throws IOException { |
54 if (len > (this.length - pos)) { | 54 if (len > (this.length - pos)) { |
55 throw new IOException(); | 55 throw new IOException(); |
56 } | 56 } |
57 System.arraycopy(data, pos, buf, off, len); | 57 System.arraycopy(data, offset+pos, buf, off, len); |
58 pos += len; | 58 pos += len; |
59 } | |
60 @Override | |
61 public int readInt() throws IOException { | |
62 // overridden not to create an intermediate array | |
63 if (length - pos < 4) { | |
64 throw new IOException(); | |
65 } | |
66 int x = offset + pos; | |
67 int rv = data[x++] << 24 | (data[x++] & 0xFF) << 16 | (data[x++] & 0xFF) << 8 | (data[x] & 0xFF); | |
68 pos += 4; | |
69 return rv; | |
70 } | |
71 @Override | |
72 public long readLong() throws IOException { | |
73 // overridden not to create an intermediate array | |
74 if (length - pos < 8) { | |
75 throw new IOException(); | |
76 } | |
77 int x = offset + pos; | |
78 int i1 = data[x++] << 24 | (data[x++] & 0xFF) << 16 | (data[x++] & 0xFF) << 8 | (data[x++] & 0xFF); | |
79 int i2 = data[x++] << 24 | (data[x++] & 0xFF) << 16 | (data[x++] & 0xFF) << 8 | (data[x] & 0xFF); | |
80 pos += 8; | |
81 return ((long) i1) << 32 | ((long) i2 & 0x0FFFFFFFFl); | |
59 } | 82 } |
60 | 83 |
61 @Override | 84 @Override |
62 public ByteArrayDataAccess reset() { | 85 public ByteArrayDataAccess reset() { |
63 pos = 0; | 86 pos = 0; |