Closed Bug 831409 Opened 11 years ago Closed 11 years ago

Statically find rooting hazards and unnecessary roots

Categories

(Core :: JavaScript Engine, defect)

Other Branch
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla29

People

(Reporter: bhackett1024, Unassigned)

References

Details

With an analysis to find the set of functions which can GC (bug 829243), it is not too hard to automatically find unrooted GC thing pointers or Values which are held live across a call which can GC, or to find rooted things which are not held live across such a call (and for which the root adds unnecessary overhead).

I wrote some more scripts to find variables fitting either of these categories, building on top of bug 829243 and also stored at https://github.com/bhackett1024/gcAnalysis.  A list of all the reports is at:

http://people.mozilla.org/~bhackett/rootingHazards.html

This currently reports 851 rooting hazards in the shell (though 107 are in jsxml.cpp and can be ignored), and 171 unnecessary roots.  These reports are still preliminary and will have a fair number of false positives, will be working to improve this.  For usability the number of false positives needs to be zero.
Depends on: 831822
Depends on: 831961
Depends on: 833396
Depends on: 895647
Depends on: 895654
Depends on: 898554
Blocks: 898606
No longer blocks: ExactRooting
No longer blocks: 898606
OS: Mac OS X → All
Hardware: x86 → All
No longer depends on: 898554
\o/
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla29
You need to log in before you can comment on or make changes to this bug.