diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2013-09-30 11:08:39 +0400 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2013-09-30 11:08:39 +0400 |
commit | cfd3b42d0fd4db2b220b0a59a697542bf08102ed (patch) | |
tree | 7df5eba4819badd76b4ecde96f2589f551d08d2c /core/src/main/java/org/bouncycastle/math | |
parent | 6ae6585eab08e0046e2b704f7aeb4a56df8064f9 (diff) |
Improve performance of shiftLeft(int)
Diffstat (limited to 'core/src/main/java/org/bouncycastle/math')
-rw-r--r-- | core/src/main/java/org/bouncycastle/math/ec/IntArray.java | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/core/src/main/java/org/bouncycastle/math/ec/IntArray.java b/core/src/main/java/org/bouncycastle/math/ec/IntArray.java index d71ff6b1..ebb6310a 100644 --- a/core/src/main/java/org/bouncycastle/math/ec/IntArray.java +++ b/core/src/main/java/org/bouncycastle/math/ec/IntArray.java @@ -267,13 +267,13 @@ class IntArray public IntArray shiftLeft(int n) { - int usedLen = getUsedLength(); - if (usedLen == 0) + if (n == 0) { return this; } - if (n == 0) + int usedLen = getUsedLength(); + if (usedLen == 0) { return this; } @@ -286,13 +286,14 @@ class IntArray int[] newInts = new int[usedLen + 1]; - int nm32 = 32 - n; - newInts[0] = m_ints[0] << n; - for (int i = 1; i < usedLen; i++) + int nm32 = 32 - n, prev = 0; + for (int i = 0; i < usedLen; i++) { - newInts[i] = (m_ints[i] << n) | (m_ints[i - 1] >>> nm32); + int next = m_ints[i]; + newInts[i] = (next << n) | (prev >>> nm32); + prev = next; } - newInts[usedLen] = m_ints[usedLen - 1] >>> nm32; + newInts[usedLen] = prev >>> nm32; return new IntArray(newInts); } |