Sfink/JS Profiling-Related APIs: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Created page with 'I've crawled around js/src/ and attempted to summarize the various APIs used for profiling-related tasks. Some of these are straight profilers, some are general debugging hooks. …')
 
mNo edit summary
Line 19: Line 19:
** jsdtracef: enter/exit/execute-enter/execute-exit/objectCreate/finalize probes
** jsdtracef: enter/exit/execute-enter/execute-exit/objectCreate/finalize probes
** probes in jsgc.cpp, jsinterp.cpp, jsobjinlines.h (obj create), NOT jstracer
** probes in jsgc.cpp, jsinterp.cpp, jsobjinlines.h (obj create), NOT jstracer
* jscall ({{bug|507012}}
* jscall ({{bug|507012}})
** #ifdef MOZ_TRACE_JSCALLS
** #ifdef MOZ_TRACE_JSCALLS
** jsapi.h, jscntxt.h: get/set callback API
** jsapi.h, jscntxt.h: get/set callback API
** piggybacks on dtrace probes but adds in jstracer probes
** piggybacks on dtrace probes but adds in jstracer probes
** start/stop done in nsJSEnvironment (bug 580055), may add a js/ variant
** start/stop done in nsJSEnvironment ({{bug|580055}}), may add a js/ variant
* debughooks (jsdv1)
* debughooks (jsdv1)
** unconditionally included
** unconditionally included

Revision as of 22:15, 30 July 2010

I've crawled around js/src/ and attempted to summarize the various APIs used for profiling-related tasks. Some of these are straight profilers, some are general debugging hooks.

  • vtune
    • #ifdef MOZ_VTUNE
    • jsdbgapi: start/stop/pause/resume API
    • global functions for JS shell & mozJSComponentLoader (NOT xpcshell!)
  • shark
    • #ifdef MOZ_SHARK
    • jsdbgapi: start/stop/connect/disconnect API (2 unused; should be static?)
    • global functions for JS shell & mozJSComponentLoader & xpcshell
    • command-line option -k for JS shell & xpcshell
  • callgrind
    • #ifdef MOZ_CALLGRIND
    • jsdbgapi: start/stop/dump API
    • global functions for JS shell & mozJSComponentLoader & xpcshell
  • dtrace
    • #ifdef INCLUDE_MOZILLA_DTRACE
    • start/stop API unnecessary
    • jsdtracef: enter/exit/execute-enter/execute-exit/objectCreate/finalize probes
    • probes in jsgc.cpp, jsinterp.cpp, jsobjinlines.h (obj create), NOT jstracer
  • jscall (bug 507012)
    • #ifdef MOZ_TRACE_JSCALLS
    • jsapi.h, jscntxt.h: get/set callback API
    • piggybacks on dtrace probes but adds in jstracer probes
    • start/stop done in nsJSEnvironment (bug 580055), may add a js/ variant
  • debughooks (jsdv1)
    • unconditionally included
    • jsdbgapi: get/set/clear
    • specific hooks enumerated in JSDebugHooks in jsprvtd.h
    • jsprvtd.h: interrupt/newScript/destroyScript/execute/call/throw hooks + some debugger,source code,error stuff
    • hooks in jsinterp.cpp (almost everything here), jsscan.cpp (source code), jsscript.cpp (newScript,destroyScript), jstracer (callHook when synthesizing a frame)
    • usage disables trace JIT
  • jsdv2
    • sorry, I don't know where this is to look at it. I've only read the spec.