mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-29 19:30:36 +02:00
Update frames.h comments.
* libguile/frames.h: Update to match reality.
This commit is contained in:
parent
950a762dc2
commit
4b7af0b7fd
1 changed files with 6 additions and 10 deletions
|
@ -40,7 +40,7 @@
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
| ... |
|
| ... |
|
||||||
+==============================+ <- fp + 2 = SCM_FRAME_PREVIOUS_SP (fp)
|
+==============================+ <- fp + 3 = SCM_FRAME_PREVIOUS_SP (fp)
|
||||||
| Dynamic link |
|
| Dynamic link |
|
||||||
+------------------------------+
|
+------------------------------+
|
||||||
| Virtual return address (vRA) |
|
| Virtual return address (vRA) |
|
||||||
|
@ -59,7 +59,7 @@
|
||||||
The stack grows down.
|
The stack grows down.
|
||||||
|
|
||||||
The calling convention is that a caller prepares a stack frame
|
The calling convention is that a caller prepares a stack frame
|
||||||
consisting of the saved FP, the saved virtual return addres, and the
|
consisting of the saved FP, the saved virtual return address, and the
|
||||||
saved machine return address of the calling function, followed by the
|
saved machine return address of the calling function, followed by the
|
||||||
procedure and then the arguments to the call, in order. Thus in the
|
procedure and then the arguments to the call, in order. Thus in the
|
||||||
beginning of a call, the procedure being called is in slot 0, the
|
beginning of a call, the procedure being called is in slot 0, the
|
||||||
|
@ -73,14 +73,10 @@
|
||||||
popping the stack pointer during the call's extent.
|
popping the stack pointer during the call's extent.
|
||||||
|
|
||||||
When a program returns, it returns its values in the slots starting
|
When a program returns, it returns its values in the slots starting
|
||||||
from local 1, as if the values were arguments to a tail call. We
|
from local 0. The callee resets the stack pointer to point to the
|
||||||
start from 1 instead of 0 for the convenience of the "values" builtin
|
last value. In this way the caller knows how many values there are:
|
||||||
function, which can just leave its arguments in place.
|
it's the number of words between the stack pointer and the slot at
|
||||||
|
which the caller placed the procedure.
|
||||||
The callee resets the stack pointer to point to the last value. In
|
|
||||||
this way the caller knows how many values there are: it's the number
|
|
||||||
of words between the stack pointer and the slot at which the caller
|
|
||||||
placed the procedure.
|
|
||||||
|
|
||||||
After checking that the number of values returned is appropriate, the
|
After checking that the number of values returned is appropriate, the
|
||||||
caller shuffles the values around (if needed), and resets the stack
|
caller shuffles the values around (if needed), and resets the stack
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue