Skip to content

Commit

Permalink
more micro-optimizations
Browse files Browse the repository at this point in the history
  • Loading branch information
Danny Yoo committed Feb 10, 2012
1 parent 97d8848 commit b7ca540
Showing 1 changed file with 3 additions and 14 deletions.
17 changes: 3 additions & 14 deletions js-assembler/runtime-src/baselib-check.js
Expand Up @@ -10,6 +10,7 @@

var EMPTY = baselib.lists.EMPTY;
var isPair = baselib.lists.isPair;
var isList = baselib.lists.isList;
var makeLowLevelEqHash = baselib.hashes.makeLowLevelEqHash;


Expand Down Expand Up @@ -75,26 +76,14 @@

var makeCheckListofArgumentType = function (predicate, predicateName) {
var listPredicate = function (x) {
var seen = makeLowLevelEqHash();
if (! isList(x)) { return false; }
while (true) {
if (x === EMPTY){
return true;
}

if (!isPair(x)) {
return false;
}

if(seen.containsKey(x)) {
// raise an error? we've got a cycle!
return false;
}

if (! predicate(x.first)) {
return false;
}

seen.put(x, true);
x = x.rest;
}
};
Expand Down Expand Up @@ -210,7 +199,7 @@
'pair');

var checkList = makeCheckArgumentType(
baselib.lists.isList,
isList,
'list');

var checkVector = makeCheckArgumentType(
Expand Down

0 comments on commit b7ca540

Please sign in to comment.