Using SlowCalls
This page documents the procedure for profiling the browser to produce output like http://people.mozilla.org/~sfink/slowcalls-proto/slowcalls.html
Contents
Getting a tree with instrumentation
Apply everything in bug 580055 and grab the script process-jscall-logs script from bug 558200.
Building with instrumentation
You will need to configure with both --enable-functiontimer and --enable-trace-jscalls:
ac_add_options --enable-trace-jscalls ac_add_options --enable-functiontimer
I've also been running with --enable-debug, which probably provides a lot more verbosity in the functiontimer logs. But I haven't tried without it, so I'm not sure.
ac_add_options --enable-debug
Run your scenario
Set the following environment variables before running your scenario:
NSPR_LOG_MODULES=SlowCalls:5 NSPR_LOG_FILE=/tmp/minefield.log MOZ_FT=/tmp/minefield.tl
For example, I run with this command:
NSPR_LOG_MODULES=SlowCalls:5 NSPR_LOG_FILE=/tmp/minefield.log MOZ_FT=/tmp/minefield.tl dist/bin/firefox -no-remote -P Blank
Exit the browser when done.
Produce the jscalls output
Run the 'process-jscall-logs' script from bug 558200 giving the two log files generated above as options, and the '-f slowcalls' flag:
process-jscall-logs -f slowcalls /tmp/minefield.log /tmp/minefield.tl
(though if you're using the default names, you don't actually have to give them on the command line.) This will produce a file /tmp/slowcalls.html.