1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-29 14:30:34 +02:00

inline FREE_FRAME in halt

* libguile/vm-i-system.c (halt): Inline FREE_FRAME, specialized for the
  halt case.
This commit is contained in:
Andy Wingo 2008-09-13 14:40:27 +02:00
parent f13c269b7f
commit 1dc8f8517c

View file

@ -58,9 +58,20 @@ VM_DEFINE_INSTRUCTION (halt, "halt", 0, 0, 0)
vp->time += scm_c_get_internal_run_time () - start_time;
HALT_HOOK ();
POP (ret);
FREE_FRAME ();
{
#ifdef THE_GOVERNMENT_IS_AFTER_ME
if (sp != stack_base)
abort ();
if (stack_base != SCM_FRAME_UPPER_ADDRESS (fp) - 1)
abort ();
#endif
/* Restore registers */
sp = SCM_FRAME_LOWER_ADDRESS (fp) - 1;
ip = NULL;
fp = SCM_FRAME_DYNAMIC_LINK (fp);
}
SYNC_ALL ();
vp->ip = NULL;
scm_dynwind_end ();
return ret;
}