/* TODO: Make jit_context_t interpreter-local */ void pj_init_global_state(pTHX) { /* Setup our new peephole optimizer */ PJ_orig_peepp = PL_peepp; PL_peepp = pj_jit_peep; /* Set up JIT compiler */ PJ_jit_context = jit_context_create(); /* Setup our callback for cleaning up JIT OPs during global cleanup */ PJ_orig_opfreehook = PL_opfreehook; PL_opfreehook = pj_jitop_free_hook; /* Setup our custom op */ XopENTRY_set(&PJ_xop_jitop, xop_name, "jitop"); XopENTRY_set(&PJ_xop_jitop, xop_desc, "a just-in-time compiled composite operation"); XopENTRY_set(&PJ_xop_jitop, xop_class, OA_LISTOP); Perl_custom_op_register(aTHX_ pj_pp_jit, &PJ_xop_jitop); /* Register super-late global cleanup hook for global JIT state */ Perl_call_atexit(aTHX_ pj_global_state_final_cleanup, NULL); }
void plu_init_global_state(pTHX) { /* Setup the actual keyword plugin */ PLU_next_keyword_plugin = PL_keyword_plugin; PL_keyword_plugin = plu_my_keyword_plugin; /* Setup our callback for cleaning up OPs during global cleanup */ PLU_orig_opfreehook = PL_opfreehook; PL_opfreehook = plu_op_free_hook; /* Setup our custom op */ XopENTRY_set(&PLU_xop, xop_name, "luaop"); XopENTRY_set(&PLU_xop, xop_desc, "Inlined Lua Execution"); XopENTRY_set(&PLU_xop, xop_class, OA_BASEOP); Perl_custom_op_register(aTHX_ plu_pp_custom, &PLU_xop); /* Init Lua compiler/interpreter */ PLU_lua_int = plu_new_lua_state(aTHX); /* Register super-late global cleanup hook for global state */ Perl_call_atexit(aTHX_ plu_global_state_final_cleanup, NULL); }