expanded MAKE_FUNCTION and MAKE_LAMBDA to encode literal frame index to name.

expanded hak_context_t to store the name field taken from the compiled block
This commit is contained in:
2025-09-05 22:41:45 +09:00
parent 313d1f9800
commit d8113efc28
20 changed files with 405 additions and 281 deletions

View File

@ -49,7 +49,7 @@ hak_t* hak_open (hak_mmgr_t* mmgr, hak_oow_t xtnsize, const hak_vmprim_t* vmprim
void hak_close (hak_t* hak)
{
hak_fini (hak);
hak_fini(hak);
HAK_MMGR_FREE (HAK_MMGR(hak), hak);
}
@ -164,7 +164,7 @@ int hak_init (hak_t* hak, hak_mmgr_t* mmgr, const hak_vmprim_t* vmprim)
modtab_inited = 1;
hak_rbt_setstyle(&hak->modtab, hak_get_rbt_style(HAK_RBT_STYLE_INLINE_COPIERS));
fill_bigint_tables (hak);
fill_bigint_tables(hak);
hak->tagged_brands[HAK_OOP_TAG_SMOOI] = HAK_BRAND_SMOOI;
hak->tagged_brands[HAK_OOP_TAG_SMPTR] = HAK_BRAND_SMPTR;
@ -184,7 +184,7 @@ int hak_init (hak_t* hak, hak_mmgr_t* mmgr, const hak_vmprim_t* vmprim)
hak->sp = -1;
hak->ip = 0;
if (hak->vmprim.dl_startup) hak->vmprim.dl_startup (hak);
if (hak->vmprim.dl_startup) hak->vmprim.dl_startup(hak);
return 0;
oops:
@ -230,7 +230,7 @@ void hak_fini (hak_t* hak)
for (cb = hak->cblist; cb; cb = cb->next)
{
if (cb->on_fini) cb->on_fini (hak);
if (cb->on_fini) cb->on_fini(hak);
}
if (hak->log.len > 0)
@ -247,7 +247,7 @@ void hak_fini (hak_t* hak)
while (hak->cblist) hak_deregcb(hak, hak->cblist);
/* detach the user data io handlers just in case */
hak_detachudio (hak);
hak_detachudio(hak);
if (hak->sem_list)
{
@ -367,7 +367,7 @@ void hak_fini (hak_t* hak)
hak->sprintf.xbuf.len = 0;
}
if (hak->vmprim.dl_cleanup) hak->vmprim.dl_cleanup (hak);
if (hak->vmprim.dl_cleanup) hak->vmprim.dl_cleanup(hak);
}
void hak_resetcode (hak_t* hak)
@ -883,7 +883,7 @@ hak_mod_data_t* hak_openmod (hak_t* hak, const hak_ooch_t* name, hak_oow_t namel
mdp = (hak_mod_data_t*)HAK_RBT_VPTR(pair);
if (load(hak, &mdp->mod) <= -1)
{
const hak_ooch_t* oldmsg = hak_backuperrmsg (hak);
const hak_ooch_t* oldmsg = hak_backuperrmsg(hak);
hak_seterrbfmt(hak, HAK_ERRNUM(hak), "module initializer [%js] returned failure in [%.*js] - %js", buf, namelen, name, oldmsg);
HAK_DEBUG3(hak, "Module function [%js] returned failure in [%.*js]\n", buf, namelen, name);
hak_rbt_delete(&hak->modtab, name, namelen);