mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-17 01:00:20 +02:00
fix some missed references when calling C functions
* gdbinit: Update to be a bit more useful. * libguile/vm-i-system.c: Make sure that arguments to C procedures are visible on the stack so they get marked. Could be a source for the missed references.
This commit is contained in:
parent
999f1b26e7
commit
887ce75ae8
2 changed files with 94 additions and 88 deletions
|
@ -558,12 +558,12 @@ VM_DEFINE_INSTRUCTION (call, "call", 1, -1, 1)
|
|||
{
|
||||
/* At this point, the stack contains the procedure and each one of its
|
||||
arguments. */
|
||||
SCM args;
|
||||
POP_LIST (nargs);
|
||||
POP (args);
|
||||
SYNC_REGISTER ();
|
||||
*sp = scm_apply (x, args, SCM_EOL);
|
||||
/* keep args on stack so they are marked */
|
||||
sp[-1] = scm_apply (x, sp[0], SCM_EOL);
|
||||
/* FIXME what if SCM_VALUESP(*sp) */
|
||||
DROP ();
|
||||
NEXT;
|
||||
}
|
||||
/*
|
||||
|
@ -729,11 +729,10 @@ VM_DEFINE_INSTRUCTION (goto_args, "goto/args", 1, -1, 1)
|
|||
*/
|
||||
if (!SCM_FALSEP (scm_procedure_p (x)))
|
||||
{
|
||||
SCM args;
|
||||
POP_LIST (nargs);
|
||||
POP (args);
|
||||
SYNC_REGISTER ();
|
||||
*sp = scm_apply (x, args, SCM_EOL);
|
||||
sp[-1] = scm_apply (x, sp[0], SCM_EOL);
|
||||
DROP ();
|
||||
/* FIXME what if SCM_VALUESP(*sp) */
|
||||
goto vm_return;
|
||||
}
|
||||
|
@ -798,11 +797,10 @@ VM_DEFINE_INSTRUCTION (mv_call, "mv-call", 3, -1, 1)
|
|||
{
|
||||
/* At this point, the stack contains the procedure and each one of its
|
||||
arguments. */
|
||||
SCM args;
|
||||
POP_LIST (nargs);
|
||||
POP (args);
|
||||
SYNC_REGISTER ();
|
||||
*sp = scm_apply (x, args, SCM_EOL);
|
||||
sp[-1] = scm_apply (x, sp[0], SCM_EOL);
|
||||
DROP ();
|
||||
if (SCM_VALUESP (*sp))
|
||||
{
|
||||
SCM values, len;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue