|
1 This directory contains scripts and a makefile for running Brian Hackett's |
|
2 static GC rooting analysis on a JS source directory. |
|
3 |
|
4 To use it: |
|
5 |
|
6 1. Download and compile sixgill. Make sure the gcc plugin is enabled. (The |
|
7 configure output will tell you.) |
|
8 |
|
9 - [sfink] I needed a couple of patches to get it work on Fedora 16/17/18. |
|
10 Ask me if you need them. |
|
11 |
|
12 2. Compile an optimized JS shell that includes the patch at |
|
13 <http://people.mozilla.org/~sfink/data/bug-835552-cwd-snarf>. This does not |
|
14 need to be in the same source tree as you are running these scripts from. |
|
15 Remember the full path to the resulting JS binary; we'll call it $JS_SHELL |
|
16 below. |
|
17 |
|
18 3. |make clean| in the objdir of the JS source tree that you're going to be |
|
19 analyzing. (These analysis scripts will default to the tree they are within, |
|
20 but you can point them at another tree.) |
|
21 |
|
22 4. in $objdir/js/src/devtools/analysis, |make JS=$JS_SHELL |
|
23 SIXGILL=.../path/to/sixgill...|. You may need one or more of the following |
|
24 additional settings in addition to the |JS| already given: |
|
25 |
|
26 - JSOBJDIR: if you are analyzing a different source tree, set this to the |
|
27 objdir of the tree you want to analyze. |
|
28 |
|
29 - ANALYSIS_SCRIPT_DIR: by default, the *.js files within the directory |
|
30 containing this README will be used, but you can point to a different |
|
31 directory full. At the time of this writing, there are some changes not in |
|
32 bhackett's git repo that are necessary, and you'll also need the |
|
33 gen-hazards.sh shell script. |
|
34 |
|
35 - JOBS: set this to the number of parallel jobs you'd like to run the final |
|
36 analysis pass with. This defaults to 6, somewhat randomly, which gave me a |
|
37 large speedup even on a machine with only 2 cores. |
|
38 |
|
39 The results will be in rootingHazards.txt |