diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-11-15 17:34:13 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-11-15 17:34:13 -0800 |
commit | aa9d5670a7789e7cf6fca1b80451858211135348 (patch) | |
tree | 7f9a12dc2f68038d420d8d732067b2feecaaee92 /src/parseTools.js | |
parent | 03d2cc7933a57da50db6d9b61336173111fcead8 (diff) |
cache isType calls
Diffstat (limited to 'src/parseTools.js')
-rw-r--r-- | src/parseTools.js | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/parseTools.js b/src/parseTools.js index d5d8ada8..24d01898 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -192,8 +192,12 @@ function isFunctionType(type, out) { return isType(parts[0]) && isFunctionDef({ text: text, item: tokenize(text.substr(1, text.length-2), true) }, out); } -function isType(type) { // TODO! - return isVoidType(type) || Runtime.isNumberType(type) || isStructType(type) || isPointerType(type) || isFunctionType(type); +var isTypeCache = {}; // quite hot, optimize as much as possible +function isType(type) { + if (type in isTypeCache) return isTypeCache[type]; + var ret = isPointerType(type) || isVoidType(type) || Runtime.isNumberType(type) || isStructType(type) || isFunctionType(type); + isTypeCache[type] = ret; + return ret; } function isVarArgsFunctionType(type) { |