diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-08-01 16:53:47 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-08-01 16:53:47 -0700 |
commit | 20f8345af9288c84afab18625a202809ab26d920 (patch) | |
tree | d41bb7b94bc5973327640dd57a4101f5f9507df6 | |
parent | 3cff82da6afdc1b377f081d84b463581624f5e02 (diff) |
optimize bsearch
-rw-r--r-- | src/library.js | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/library.js b/src/library.js index 8342decf..8f80ebd9 100644 --- a/src/library.js +++ b/src/library.js @@ -3921,7 +3921,11 @@ LibraryManager.library = { bsearch: function(key, base, num, size, compar) { var cmp = function(x, y) { - return Runtime.dynCall('iii', compar, [x, y]) +#if ASM_JS + return Module['dynCall_iii'](compar, x, y); +#else + return FUNCTION_TABLE[compar](x, y); +#endif }; var left = 0; var right = num; @@ -3931,7 +3935,6 @@ LibraryManager.library = { mid = (left + right) >>> 1; addr = base + (mid * size); test = cmp(key, addr); - if (test < 0) { right = mid; } else if (test > 0) { @@ -4151,9 +4154,6 @@ LibraryManager.library = { if (num == 0 || size == 0) return; // forward calls to the JavaScript sort method // first, sort the items logically - var comparator = function(x, y) { - return Runtime.dynCall('iii', cmp, [x, y]); - } var keys = []; for (var i = 0; i < num; i++) keys.push(i); keys.sort(function(a, b) { |