JS_SetFunctionCallback

Obsolete since JSAPI 37
This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

Sets a callback to be run whenever a JavaScript function is invoked or exited. This lets you trace the execution of code, and is particularly useful for JavaScript tracers and profilers since it works across all run modes (interpreter, method JIT, trace JIT). Using this function may have a significant performance impact. See Function tracing for an example.

Note: This method is only available if MOZ_TRACE_JSCALLS was defined at compile time using --enable-trace-jscalls.

Syntax

void
JS_SetFunctionCallback(JSContext *cx, JSFunctionCallback fcb);
Name Type Description
cx JSContext * Pointer to a JS context from which to derive runtime information. Requires request. In a JS_THREADSAFE build, the caller must be in a request on this JSContext.
fcb JSFunctionCallback The callback to execute when JavaScript functions are invoked and exited. Specify NULL to stop calling the current callback. The callback must not modify the current state of execution. The call stack cannot be relied upon, because this callback may be invoked from the JIT code when the stack frame and context are in an indeterminate state.

Description

JS_SetFunctionCallback sets a C function to be called each time a JavaScript function is invoked or exits.

fcb is a pointer to the C function to call.

Note that debuggers should probably use JS_SetCallHook in preference to this function, because it is invoked when the Javascript stack is guaranteed to be in a consistent state (and therefore it is valid to inspect and modify local variables, generate stack traces, and set breakpoints.)

Callback syntax

typedef void
(* JSFunctionCallback)(const JSFunction *fun,const JSScript *scr,
                       const JSContext *cx, int entering);
Name Type Description
fun const JSFunction * The JavaScript function being invoked or exited.
scr const JSScript * The script being executed.
cx JSContext * The JavaScript context in which the script is being run.
entering int true if the callback is being called because the specified function is being invoked or false if the function is exiting.

See Also