mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
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:
parent
1300347b88
commit
f64f98647c
@ -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 = \
|
||||
|
@ -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]);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user