aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-08-01 16:53:47 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-08-01 16:53:47 -0700
commit20f8345af9288c84afab18625a202809ab26d920 (patch)
treed41bb7b94bc5973327640dd57a4101f5f9507df6
parent3cff82da6afdc1b377f081d84b463581624f5e02 (diff)
optimize bsearch
-rw-r--r--src/library.js10
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) {