/*@ * @deftypefun int jit_function_set_meta (jit_function_t @var{func}, int @var{type}, void *@var{data}, jit_meta_free_func @var{free_data}, int @var{build_only}) * Tag a function with some metadata. Returns zero if out of memory. * * Metadata may be used to store dependency graphs, branch prediction * information, or any other information that is useful to optimizers * or code generators. It can also be used by higher level user code * to store information about the function that is specific to the * virtual machine or language. * * If the @var{type} already has some metadata associated with it, then * the previous value will be freed. * * If @var{build_only} is non-zero, then the metadata will be freed * when the function is compiled with @code{jit_function_compile}. * Otherwise the metadata will persist until the JIT context is destroyed, * or @code{jit_function_free_meta} is called for the specified @var{type}. * * Metadata type values of 10000 or greater are reserved for internal use. * @end deftypefun @*/ int jit_function_set_meta(jit_function_t func, int type, void *data, jit_meta_free_func free_data, int build_only) { if(build_only) { if(!_jit_function_ensure_builder(func)) { return 0; } return jit_meta_set(&(func->builder->meta), type, data, free_data, func); } else { return jit_meta_set(&(func->meta), type, data, free_data, 0); } }
/*@ * @deftypefun int jit_block_set_meta (jit_block_t @var{block}, int @var{type}, void *@var{data}, jit_meta_free_func @var{free_data}) * Tag a block with some metadata. Returns zero if out of memory. * If the @var{type} already has some metadata associated with it, then * the previous value will be freed. Metadata may be used to store * dependency graphs, branch prediction information, or any other * information that is useful to optimizers or code generators. * * Metadata type values of 10000 or greater are reserved for internal use. * @end deftypefun @*/ int jit_block_set_meta(jit_block_t block, int type, void *data, jit_meta_free_func free_data) { return jit_meta_set(&(block->meta), type, data, free_data, block->func); }