#include "cell.h" // Return the current stack depth. JSC_CCALL(debug_stack_depth, return number2js(js,js_debugger_stack_depth(js))) // Return a backtrace of the current call stack. JSC_CCALL(debug_build_backtrace, return js_debugger_build_backtrace(js,NULL)) // Return the closure variables for a given function. JSC_CCALL(debug_closure_vars, return js_debugger_closure_variables(js,argv[0])) JSC_CCALL(debug_set_closure_var, js_debugger_set_closure_variable(js,argv[0],argv[1],argv[2]); return JS_NULL; ) // Return the local variables for a specific stack frame. JSC_CCALL(debug_local_vars, return js_debugger_local_variables(js, js2number(js,argv[0]))) // Return metadata about a given function. JSC_CCALL(debug_fn_info, return js_debugger_fn_info(js, argv[0])) // Return an array of functions in the current backtrace. JSC_CCALL(debug_backtrace_fns, return js_debugger_backtrace_fns(js,NULL)) static const JSCFunctionListEntry js_debug_funcs[] = { MIST_FUNC_DEF(debug, stack_depth, 0), MIST_FUNC_DEF(debug, build_backtrace, 0), MIST_FUNC_DEF(debug, closure_vars, 1), MIST_FUNC_DEF(debug, set_closure_var, 3), MIST_FUNC_DEF(debug, local_vars, 1), MIST_FUNC_DEF(debug, fn_info, 1), MIST_FUNC_DEF(debug, backtrace_fns,0), }; JSValue js_debug_use(JSContext *js) { JSValue mod = JS_NewObject(js); JS_SetPropertyFunctionList(js,mod,js_debug_funcs,countof(js_debug_funcs)); return mod; }