[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 02/07: subr-call implementation simplification
From: |
Andy Wingo |
Subject: |
[Guile-commits] 02/07: subr-call implementation simplification |
Date: |
Fri, 23 Oct 2015 13:36:16 +0000 |
wingo pushed a commit to branch master
in repository guile.
commit 9144f50c319845828515ceb313609da9e827ffa6
Author: Andy Wingo <address@hidden>
Date: Thu Oct 22 11:35:07 2015 +0000
subr-call implementation simplification
* libguile/vm-engine.c (subr-call): Reference args from SP, not FP.
---
libguile/vm-engine.c | 45 ++++++++++++++++++++++-----------------------
1 files changed, 22 insertions(+), 23 deletions(-)
diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c
index ca369bd..308c04c 100644
--- a/libguile/vm-engine.c
+++ b/libguile/vm-engine.c
@@ -801,53 +801,52 @@ VM_NAME (scm_i_thread *thread, struct scm_vm *vp,
SYNC_IP ();
- // FIXME!!!!
switch (FRAME_LOCALS_COUNT_FROM (1))
{
case 0:
ret = subr ();
break;
case 1:
- ret = subr (FP_REF (1));
+ ret = subr (SP_REF (0));
break;
case 2:
- ret = subr (FP_REF (1), FP_REF (2));
+ ret = subr (SP_REF (1), SP_REF (0));
break;
case 3:
- ret = subr (FP_REF (1), FP_REF (2), FP_REF (3));
+ ret = subr (SP_REF (2), SP_REF (1), SP_REF (0));
break;
case 4:
- ret = subr (FP_REF (1), FP_REF (2), FP_REF (3),
- FP_REF (4));
+ ret = subr (SP_REF (3), SP_REF (2), SP_REF (1),
+ SP_REF (0));
break;
case 5:
- ret = subr (FP_REF (1), FP_REF (2), FP_REF (3),
- FP_REF (4), FP_REF (5));
+ ret = subr (SP_REF (4), SP_REF (3), SP_REF (2),
+ SP_REF (1), SP_REF (0));
break;
case 6:
- ret = subr (FP_REF (1), FP_REF (2), FP_REF (3),
- FP_REF (4), FP_REF (5), FP_REF (6));
+ ret = subr (SP_REF (5), SP_REF (4), SP_REF (3),
+ SP_REF (2), SP_REF (1), SP_REF (0));
break;
case 7:
- ret = subr (FP_REF (1), FP_REF (2), FP_REF (3),
- FP_REF (4), FP_REF (5), FP_REF (6),
- FP_REF (7));
+ ret = subr (SP_REF (6), SP_REF (5), SP_REF (4),
+ SP_REF (3), SP_REF (2), SP_REF (1),
+ SP_REF (0));
break;
case 8:
- ret = subr (FP_REF (1), FP_REF (2), FP_REF (3),
- FP_REF (4), FP_REF (5), FP_REF (6),
- FP_REF (7), FP_REF (8));
+ ret = subr (SP_REF (7), SP_REF (6), SP_REF (5),
+ SP_REF (4), SP_REF (3), SP_REF (2),
+ SP_REF (1), SP_REF (0));
break;
case 9:
- ret = subr (FP_REF (1), FP_REF (2), FP_REF (3),
- FP_REF (4), FP_REF (5), FP_REF (6),
- FP_REF (7), FP_REF (8), FP_REF (9));
+ ret = subr (SP_REF (8), SP_REF (7), SP_REF (6),
+ SP_REF (5), SP_REF (4), SP_REF (3),
+ SP_REF (2), SP_REF (1), SP_REF (0));
break;
case 10:
- ret = subr (FP_REF (1), FP_REF (2), FP_REF (3),
- FP_REF (4), FP_REF (5), FP_REF (6),
- FP_REF (7), FP_REF (8), FP_REF (9),
- FP_REF (10));
+ ret = subr (SP_REF (9), SP_REF (8), SP_REF (7),
+ SP_REF (6), SP_REF (5), SP_REF (4),
+ SP_REF (3), SP_REF (2), SP_REF (1),
+ SP_REF (0));
break;
default:
abort ();
- [Guile-commits] branch master updated (f039604 -> 5f4ac52), Andy Wingo, 2015/10/23
- [Guile-commits] 04/07: Minor NEWS update., Andy Wingo, 2015/10/23
- [Guile-commits] 02/07: subr-call implementation simplification,
Andy Wingo <=
- [Guile-commits] 06/07: Wire up `guild compile -O0 foo.scm', Andy Wingo, 2015/10/23
- [Guile-commits] 03/07: Small subr-call refactor, Andy Wingo, 2015/10/23
- [Guile-commits] 07/07: Use a bootstrapped -O0 compiler to compile the -O2 Guile, Andy Wingo, 2015/10/23
- [Guile-commits] 01/07: Update VM documentation for new stack layout, Andy Wingo, 2015/10/23
- [Guile-commits] 05/07: Update Gnulib to v0.1-603-g1d16a7b, Andy Wingo, 2015/10/23