Ejemplo n.º 1
0
/* 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);
}
Ejemplo n.º 2
0
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);
}