diff options
author | Andy Wingo <wingo@pobox.com> | 2015-11-26 16:36:22 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2015-12-01 10:57:20 +0100 |
commit | 02fc5a772bc95bbd70a81b8589bf261a3822f9bd (patch) | |
tree | 36504315d7c2622762acb9744360eeef5c07f83e /libguile/frames.c | |
parent | d729a0dc757943c2bafb0cb300fc1ae7b3f56e91 (diff) | |
download | guile-02fc5a772bc95bbd70a81b8589bf261a3822f9bd.tar.gz |
Identify boot continuations by code, not closure
* libguile/vm.h:
* libguile/vm.c (scm_i_vm_is_boot_continuation_code): New internal
procedure.
* libguile/stacks.c (scm_make_stack):
* libguile/frames.c (scm_c_frame_previous): Use new helper to identify
boot frames.
Diffstat (limited to 'libguile/frames.c')
-rw-r--r-- | libguile/frames.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/libguile/frames.c b/libguile/frames.c index 48e963a0f..312d53b00 100644 --- a/libguile/frames.c +++ b/libguile/frames.c @@ -388,11 +388,8 @@ scm_c_frame_previous (enum scm_vm_frame_kind kind, struct scm_frame *frame) frame->sp_offset = stack_top - new_sp; frame->ip = SCM_FRAME_RETURN_ADDRESS (this_fp); - { - SCM proc = scm_c_frame_closure (kind, frame); - if (SCM_PROGRAM_P (proc) && SCM_PROGRAM_IS_BOOT (proc)) - goto again; - } + if (scm_i_vm_is_boot_continuation_code (frame->ip)) + goto again; return 1; } |