Closed Bug 588002 Opened 14 years ago Closed 14 years ago

upgrade callgraph for 4.5

Categories

(Developer Infrastructure :: Source Code Analysis, defect)

x86
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: ehren.m, Assigned: ehren.m)

References

Details

Attachments

(2 files, 1 obsolete file)

Attached patch callgraph patch (obsolete) — Splinter Review
The only major issue I've encountered with this is that, in general, dehydra running under 4.5 is a bit slower than with 4.3. IIRC callgraph under 4.3 takes about 2 hrs with the right machine/j value. This takes more like 3-4 which I believe is only partly due to the extra processing.
Attachment #466619 - Flags: review?(dwitte)
Attached patch library changesSplinter Review
I'm including a minor esp fix along with the callgraph related stuff.
Attachment #466620 - Flags: review?(tglek)
While you're poking around in callgraph, can I bring this to your attention:

/var/www/html/dxr/xref-scripts/callgraph/callgraph_static.js:335: JS Exception: resolve_function_decl: unresolvable decl with TREE_CODE INTEGER_CST
:0:     #0: Error("resolve_function_decl: unresolvable decl with TREE_CODE INTEGER_CST")
/var/www/html/dxr/xref-scripts/callgraph/callgraph_static.js:335:       #1: resolve_function_decl([object GCCNode])
/var/www/html/dxr/xref-scripts/callgraph/callgraph_static.js:306:       #2: ([object GCCNode],[object Array])
/var/www/html/dxr/tools/gcc-dehydra/dehydra/libs/treehydra.js:166:      #3: walk_tree([object GCCNode],(function (t, stack) {if (TREE_CODE(t) != CALL_EXPR) {return;}var callee = resolve_function_decl(t);if (!callee) {throw new Error("unresolvable function " + expr_display(t));}debug_print("  callee:    " + serialize_full_method(get_names(callee)));var edge = {caller: {}, callee: {}};edge.caller = get_names(fn);edge.callee = get_names(callee);edges.push(edge);}))
/var/www/html/dxr/xref-scripts/callgraph/callgraph_static.js:302:       #4: process_tree([object GCCNode])
/var/www/html/dxr/mozilla-trees/mozilla-central/js/src/config/static-checking.js:101:   #5: ([object GCCNode])

This may want a new bug, or it may be something that will be fixed with the move to 4.5.  What do you think?
(In reply to comment #2)
> While you're poking around in callgraph, can I bring this to your attention:
> 
> /var/www/html/dxr/xref-scripts/callgraph/callgraph_static.js:335: JS Exception:
> resolve_function_decl: unresolvable decl with TREE_CODE INTEGER_CST
> :0:     #0: Error("resolve_function_decl: unresolvable decl with TREE_CODE
> INTEGER_CST")

If you post the preprocessed file from compiling with -save-temps I can check with both versions.
Comment on attachment 466620 [details] [diff] [review]
library changes


>+// see gcc/tree.h for |enum symbol_visibility| definition:
>+let VISIBILITY_DEFAULT   = 0;
>+let VISIBILITY_PROTECTED = 1;
>+let VISIBILITY_HIDDEN    = 2;
>+let VISIBILITY_INTERNAL  = 3;

use const.



>+  lhs = unwrap_lhs(lhs);

This change seems ok. Not sure why it wasn't a problem before.
Attachment #466620 - Flags: review?(tglek) → review+
Attached patch callgraph patchSplinter Review
this fixes humph's |((void(*)())0)();| call issue by treating it like any other function pointer (serializing it as void ::(*)() ). I think adding integer constants to the node table is probably not necessary :)
Attachment #466619 - Attachment is obsolete: true
Attachment #466806 - Flags: review?(dwitte)
Attachment #466619 - Flags: review?(dwitte)
> >+  lhs = unwrap_lhs(lhs);
> 
> This change seems ok. Not sure why it wasn't a problem before.

also not quite sure since I've been able to get through the build before (might be due to new code).

http://hg.mozilla.org/rewriting-and-analysis/dehydra/rev/8ee8cd0d4895
Comment on attachment 466806 [details] [diff] [review]
callgraph patch

Nice! Like the weights bit. r=dwitte
Attachment #466806 - Flags: review?(dwitte) → review+
Depends on: 589240
http://hg.mozilla.org/rewriting-and-analysis/callgraph/rev/2db0e1adffbe

If there's anything else to do here, let's get a followup.
Assignee: nobody → ehren.m
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
Product: Core → Firefox Build System
Product: Firefox Build System → Developer Infrastructure
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: