aboutsummaryrefslogtreecommitdiff
path: root/src/parseTools.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-11-15 17:34:13 -0800
committerAlon Zakai <alonzakai@gmail.com>2012-11-15 17:34:13 -0800
commitaa9d5670a7789e7cf6fca1b80451858211135348 (patch)
tree7f9a12dc2f68038d420d8d732067b2feecaaee92 /src/parseTools.js
parent03d2cc7933a57da50db6d9b61336173111fcead8 (diff)
cache isType calls
Diffstat (limited to 'src/parseTools.js')
-rw-r--r--src/parseTools.js8
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) {