|
|
|
|
|
|
#include "global.h" |
#include "module.h" |
#include "pike_error.h" |
#include "interpret.h" |
#include "pike_embed.h" |
#include "module_support.h" |
#include "pike_security.h" |
|
#ifdef PIKE_DEBUG |
|
* do not document please. /Hubbe |
*/ |
PMOD_EXPORT void f__leak(INT32 args) |
{ |
INT32 i; |
|
if(!args) |
SIMPLE_TOO_FEW_ARGS_ERROR("_leak", 1); |
|
if(!REFCOUNTED_TYPE(TYPEOF(Pike_sp[-args]))) |
SIMPLE_BAD_ARG_ERROR("_leak", 1, |
"array|mapping|multiset|object|" |
"function|program|string"); |
|
add_ref(Pike_sp[-args].u.dummy); |
i=Pike_sp[-args].u.refs[0]; |
pop_n_elems(args); |
push_int(i); |
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
PMOD_EXPORT void f_debug(INT32 args) |
{ |
INT_TYPE d; |
get_all_args("debug", args, "%+", &d); |
pop_n_elems(args); |
push_int(d_flag); |
d_flag = d; |
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
PMOD_EXPORT void f_optimizer_debug(INT32 args) |
{ |
INT_TYPE l; |
get_all_args("optimizer_debug", args, "%+", &l); |
pop_n_elems(args); |
push_int(l_flag); |
l_flag = l; |
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
PMOD_EXPORT void f_assembler_debug(INT32 args) |
{ |
INT_TYPE l; |
get_all_args("assembler_debug", args, "%+", &l); |
pop_n_elems(args); |
push_int(a_flag); |
a_flag = l; |
} |
|
|
|
|
|
|
|
|
|
|
|
|
void f_dump_program_tables(INT32 args) |
{ |
struct program *p; |
INT_TYPE indent = 0; |
|
ASSERT_SECURITY_ROOT("dump_program_tables"); |
get_all_args("dump_program_tables", args, "%p.%+", &p, &indent); |
|
dump_program_tables(p, indent); |
pop_n_elems(args); |
} |
|
#ifdef YYDEBUG |
|
|
|
|
|
|
|
|
|
|
|
|
|
PMOD_EXPORT void f_compiler_trace(INT32 args) |
{ |
extern int yydebug; |
INT_TYPE yyd; |
ASSERT_SECURITY_ROOT("_compiler_trace"); |
|
get_all_args("_compiler_trace", args, "%i", &yyd); |
pop_n_elems(args); |
push_int(yydebug); |
yydebug = yyd; |
} |
|
#endif /* YYDEBUG */ |
|
#endif /* PIKE_DEBUG */ |
|
PIKE_MODULE_INIT |
{ |
#ifdef PIKE_DEBUG |
ADD_INT_CONSTANT("HAVE_DEBUG", 1, 0); |
ADD_FUNCTION("_leak", f__leak, tFunc(tRef,tInt), OPT_EXTERNAL_DEPEND); |
ADD_FUNCTION("debug", f_debug, |
tFunc(tIntPos,tIntPos), OPT_SIDE_EFFECT|OPT_EXTERNAL_DEPEND); |
ADD_FUNCTION("optimizer_debug", f_optimizer_debug, |
tFunc(tIntPos,tIntPos), OPT_SIDE_EFFECT|OPT_EXTERNAL_DEPEND); |
ADD_FUNCTION("assembler_debug", f_assembler_debug, |
tFunc(tInt,tIntPos), OPT_SIDE_EFFECT|OPT_EXTERNAL_DEPEND); |
ADD_FUNCTION("dump_program_tables", f_dump_program_tables, |
tFunc(tPrg(tObj) tIntPos,tVoid), |
OPT_SIDE_EFFECT|OPT_EXTERNAL_DEPEND); |
#ifdef YYDEBUG |
ADD_FUNCTION("compiler_trace", f_compiler_trace, |
tFunc(tIntPos,tIntPos), OPT_SIDE_EFFECT|OPT_EXTERNAL_DEPEND); |
#endif /* YYDEBUG */ |
#endif /* PIKE_DEBUG */ |
} |
|
PIKE_MODULE_EXIT |
{ |
} |
|
|