mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-03 05:20:16 +02:00
Remove SCM_FRAME_PROGRAM
* libguile/frames.h: Remove SCM_FRAME_PROGRAM, now unused.
This commit is contained in:
parent
73fc4e73e4
commit
18aa6da21e
1 changed files with 0 additions and 21 deletions
|
@ -110,27 +110,6 @@ struct scm_vm_frame
|
||||||
#define SCM_FRAME_NUM_LOCALS(fp, sp) \
|
#define SCM_FRAME_NUM_LOCALS(fp, sp) \
|
||||||
((sp) + 1 - &SCM_FRAME_LOCAL (fp, 0))
|
((sp) + 1 - &SCM_FRAME_LOCAL (fp, 0))
|
||||||
|
|
||||||
/* Currently (November 2013) we keep the procedure and arguments in
|
|
||||||
their slots for the duration of the procedure call, regardless of
|
|
||||||
whether the values are live or not. This allows for backtraces that
|
|
||||||
show the closure and arguments. We may allow the compiler to relax
|
|
||||||
this restriction in the future, if the user so desires. This would
|
|
||||||
conserve stack space and make GC more precise. We would need better
|
|
||||||
debugging information to do that, however.
|
|
||||||
|
|
||||||
Even now there is an exception to the rule that slot 0 holds the
|
|
||||||
procedure, which is in the case of tail calls. The compiler will
|
|
||||||
emit code that shuffles the new procedure and arguments into position
|
|
||||||
before performing the tail call, so there is a window in which
|
|
||||||
SCM_FRAME_PROGRAM does not correspond to the program being executed.
|
|
||||||
|
|
||||||
The moral of the story is to use the IP in a frame to determine what
|
|
||||||
procedure is being called. It is only appropriate to use
|
|
||||||
SCM_FRAME_PROGRAM in the prologue of a procedure call, when you know
|
|
||||||
it must be there. */
|
|
||||||
|
|
||||||
#define SCM_FRAME_PROGRAM(fp) (SCM_FRAME_LOCAL (fp, 0))
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Heap frames
|
* Heap frames
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue