Fix static-analysis bustage by using treehydra instead of dehydra. My theory is that the dehydra type cache is becoming confused by GCC tree GC which is reusing tree pointers for different types.

This commit is contained in:
Benjamin Smedberg 2009-08-07 11:16:26 -04:00
parent 1300347b88
commit f64f98647c
2 changed files with 17 additions and 12 deletions

View File

@ -5,7 +5,6 @@ DEHYDRA_SCRIPT = $(topsrcdir)/config/static-checking.js
DEHYDRA_MODULES = \
$(topsrcdir)/xpcom/analysis/final.js \
$(topsrcdir)/layout/generic/frame-verify.js \
$(NULL)
TREEHYDRA_MODULES = \
@ -13,6 +12,7 @@ TREEHYDRA_MODULES = \
$(topsrcdir)/xpcom/analysis/stack.js \
$(topsrcdir)/xpcom/analysis/flow.js \
$(topsrcdir)/js/src/jsstack.js \
$(topsrcdir)/layout/generic/frame-verify.js \
$(NULL)
DEHYDRA_ARGS = \

View File

@ -56,19 +56,24 @@ let haveIDs = {};
// We match up needIDs with haveIDs at the end because static variables are
// not present in the .members array of a type
function process_decl(d)
function process_tree_decl(d)
{
if (d.name) {
if (frameIIDRE(d.name)) {
haveIDs[d.memberOf.name] = 1;
}
else if (queryFrameRE(d.name) && d.template === undefined) {
let templtype = d.type.type.type;
while (templtype.typedef !== undefined)
templtype = templtype.typedef;
d = dehydra_convert(d);
if (d.name && frameIIDRE(d.name)) {
haveIDs[d.memberOf.name] = 1;
}
}
function process_cp_pre_genericize(d)
{
d = dehydra_convert(d);
if (queryFrameRE(d.name) && d.template === undefined) {
let templtype = d.type.type.type;
while (templtype.typedef !== undefined)
templtype = templtype.typedef;
needIDs.push([templtype.name, d.loc]);
}
needIDs.push([templtype.name, d.loc]);
}
}