summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Turek <brian.turek@gmail.com>2009-08-26 00:41:18 +0000
committerBrian Turek <brian.turek@gmail.com>2009-08-26 00:41:18 +0000
commite10c1bc0f11b421cf5f4f275054f3dfb7c051c3c (patch)
tree1d45065b0a87407454b9543f149d781951bfa668
parent3a568dec1d7d979f32217e7b95645e52ca6d40d7 (diff)
downloadjsSHA-e10c1bc0f11b421cf5f4f275054f3dfb7c051c3c.zip
jsSHA-e10c1bc0f11b421cf5f4f275054f3dfb7c051c3c.tar.gz
jsSHA-e10c1bc0f11b421cf5f4f275054f3dfb7c051c3c.tar.bz2
Did some basic optimizations on "math" functions, ~10% speedup
-rw-r--r--src/sha.js36
1 files changed, 13 insertions, 23 deletions
diff --git a/src/sha.js b/src/sha.js
index 484a496..0bd5586 100644
--- a/src/sha.js
+++ b/src/sha.js
@@ -158,11 +158,7 @@ function jsSHA(srcString, inputFormat) {
* @return The x shifted circularly by n bits
*/
var rotl_32 = function (x, n) {
- if (n < 32) {
- return (x << n) | (x >>> (32 - n));
- } else {
- return x;
- }
+ return (x << n) | (x >>> (32 - n));
};
/*
@@ -174,11 +170,7 @@ function jsSHA(srcString, inputFormat) {
* @return The x shifted circularly by n bits
*/
var rotr_32 = function (x, n) {
- if (n < 32) {
- return (x >>> n) | (x << (32 - n));
- } else {
- return x;
- }
+ return (x >>> n) | (x << (32 - n));
};
/*
@@ -190,15 +182,16 @@ function jsSHA(srcString, inputFormat) {
* @return The x shifted circularly by n bits
*/
var rotr_64 = function (x, n) {
- if (n < 32) {
+ if (n <= 32) {
return new Int_64(
(x.highOrder >>> n) | (x.lowOrder << (32 - n)),
(x.lowOrder >>> n) | (x.highOrder << (32 - n))
);
- } else if (n === 32) { // Apparently in JS, shifting a 32-bit value by 32 yields original value
- return new Int_64(x.lowOrder, x.highOrder);
} else {
- return rotr_64(rotr_64(x, 32), n - 32);
+ return new Int_64(
+ (x.lowOrder >>> n) | (x.highOrder << (32 - n)),
+ (x.highOrder >>> n) | (x.lowOrder << (32 - n))
+ );
}
};
@@ -211,11 +204,7 @@ function jsSHA(srcString, inputFormat) {
* @return The x shifted by n bits
*/
var shr_32 = function (x, n) {
- if (n < 32) {
- return x >>> n;
- } else {
- return 0;
- }
+ return x >>> n;
};
/*
@@ -227,15 +216,16 @@ function jsSHA(srcString, inputFormat) {
* @return The x shifted by n bits
*/
var shr_64 = function (x, n) {
- if (n < 32) {
+ if (n <= 32) {
return new Int_64(
x.highOrder >>> n,
x.lowOrder >>> n | (x.highOrder << (32 - n))
);
- } else if (n === 32) { // Apparently in JS, shifting a 32-bit value by 32 yields original value
- return new Int_64(0, x.highOrder);
} else {
- return shr_64(shr_64(x, 32), n - 32);
+ return new Int_64(
+ 0,
+ x.highOrder << (32 - n)
+ );
}
};