diff --git a/doc/body.texi b/doc/body.texi index a527db788..23b8b8fbc 100644 --- a/doc/body.texi +++ b/doc/body.texi @@ -1068,10 +1068,10 @@ int main(int argc, char *argv[]) @rem{/* call the generated code@comma{} passing its size as argument */} myFunction((char*)jit_address(end) - (char*)jit_address(start)); + jit_clear_state(); jit_disassemble(); - jit_clear_state(); jit_destroy_state(); finish_jit(); return 0; @@ -1127,15 +1127,15 @@ call must be done after the @code{emit} call or either a fatal error will happen (if @lightning{} is built with assertions enable) or an undefined value will be returned. -@item jit_disassemble(); -@code{disassemble} will dump the generated code to standard output, -unless @lightning{} was built with the disassembler disabled, in which -case no output will be shown. - @item jit_clear_state(); Note that @code{jit_clear_state} was called after executing jit in this example. It was done because it must be called after any call to @code{jit_address} or @code{jit_print}. + +@item jit_disassemble(); +@code{disassemble} will dump the generated code to standard output, +unless @lightning{} was built with the disassembler disabled, in which +case no output will be shown. @end table @node RPN calculator diff --git a/doc/printf.c b/doc/printf.c index 2ab0738eb..85485412f 100644 --- a/doc/printf.c +++ b/doc/printf.c @@ -30,10 +30,10 @@ int main(int argc, char *argv[]) /* call the generated code, passing its size as argument */ myFunction((char*)jit_address(end) - (char*)jit_address(start)); + jit_clear_state(); jit_disassemble(); - jit_clear_state(); jit_destroy_state(); finish_jit(); return 0; diff --git a/lib/lightning.c b/lib/lightning.c index 949deea84..5dce92e6a 100644 --- a/lib/lightning.c +++ b/lib/lightning.c @@ -832,6 +832,13 @@ jit_new_state(void) void _jit_clear_state(jit_state_t *_jit) { +#if DEVEL_DISASSEMBLER +# define jit_really_clear_state() _jit_really_clear_state(_jit) +} + +void _jit_really_clear_state(jit_state_t *_jit) +{ +#endif jit_word_t offset; jit_function_t *function; @@ -889,6 +896,9 @@ _jit_clear_state(jit_state_t *_jit) void _jit_destroy_state(jit_state_t *_jit) { +#if DEVEL_DISASSEMBLER + jit_really_clear_state(); +#endif if (!_jit->user_code) munmap(_jit->code.ptr, _jit->code.length); if (!_jit->user_data)