1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-03 13:20:26 +02:00

Stack traces skip RTL boot frames

* libguile/frames.c (frame-previous)
* libguile/stacks.c (make-stack): Skip RTL boot frames.
This commit is contained in:
Andy Wingo 2013-10-17 23:25:01 +02:00
parent 9d87158fdb
commit 361d0de285
2 changed files with 5 additions and 3 deletions

View file

@ -334,7 +334,8 @@ SCM_DEFINE (scm_frame_previous, "frame-previous", 1, 0, 0,
SCM_VM_FRAME_OFFSET (frame)); SCM_VM_FRAME_OFFSET (frame));
proc = scm_frame_procedure (frame); proc = scm_frame_procedure (frame);
if (SCM_PROGRAM_P (proc) && SCM_PROGRAM_IS_BOOT (proc)) if ((SCM_PROGRAM_P (proc) || SCM_RTL_PROGRAM_P (proc))
&& SCM_PROGRAM_IS_BOOT (proc))
goto again; goto again;
else else
return frame; return frame;

View file

@ -1,5 +1,5 @@
/* A stack holds a frame chain /* A stack holds a frame chain
* Copyright (C) 1996,1997,2000,2001, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation * Copyright (C) 1996,1997,2000,2001, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License
@ -276,7 +276,8 @@ SCM_DEFINE (scm_make_stack, "make-stack", 1, 0, 1,
/* FIXME: is this even possible? */ /* FIXME: is this even possible? */
if (scm_is_true (frame) if (scm_is_true (frame)
&& SCM_PROGRAM_P (scm_frame_procedure (frame)) && (SCM_PROGRAM_P (scm_frame_procedure (frame))
|| SCM_RTL_PROGRAM_P (scm_frame_procedure (frame)))
&& SCM_PROGRAM_IS_BOOT (scm_frame_procedure (frame))) && SCM_PROGRAM_IS_BOOT (scm_frame_procedure (frame)))
frame = scm_frame_previous (frame); frame = scm_frame_previous (frame);