Lines 625-634
VM_DEFINE_INSTRUCTION (47, bind_optionals_shuffle, "bind-optionals/shuffle", 6,
Link Here
|
625 |
/* now shuffle up, from walk to ntotal */ |
625 |
/* now shuffle up, from walk to ntotal */ |
626 |
{ |
626 |
{ |
627 |
scm_t_ptrdiff nshuf = sp - walk + 1, i; |
627 |
scm_t_ptrdiff nshuf = sp - walk + 1, i; |
628 |
sp = (fp - 1) + ntotal + nshuf; |
628 |
/* check the value of nshuf to workaround ice ssa corruption */ |
629 |
CHECK_OVERFLOW (); |
629 |
/* while compiling with -O -g */ |
630 |
for (i = 0; i < nshuf; i++) |
630 |
if (nshuf > 0) |
631 |
sp[-i] = walk[nshuf-i-1]; |
631 |
{ |
|
|
632 |
sp = (fp - 1) + ntotal + nshuf; |
633 |
CHECK_OVERFLOW (); |
634 |
for (i = 0; i < nshuf; i++) |
635 |
sp[-i] = walk[nshuf-i-1]; |
636 |
} |
637 |
else |
638 |
{ |
639 |
sp = (fp - 1) + ntotal + nshuf; |
640 |
CHECK_OVERFLOW (); |
641 |
for (i = 0; i < nshuf; i++) |
642 |
sp[-i] = walk[nshuf-i-1]; |
643 |
} |
632 |
} |
644 |
} |
633 |
/* and fill optionals & keyword args with SCM_UNDEFINED */ |
645 |
/* and fill optionals & keyword args with SCM_UNDEFINED */ |
634 |
while (walk <= (fp - 1) + ntotal) |
646 |
while (walk <= (fp - 1) + ntotal) |
635 |
- |
|
|