Author: jonathan
Date: Sat Apr 14 16:42:36 2007
New Revision: 18209
Modified:
trunk/src/inter_call.c
Log:
Fix bug in Parrot_PCCINVOKE. When there was an invocant, the number of
registers used was not being incremetned, and we were losing the current index
too.
Modified: trunk/src/inter_call.c
==============================================================================
--- trunk/src/inter_call.c (original)
+++ trunk/src/inter_call.c Sat Apr 14 16:42:36 2007
@@ -1411,17 +1411,18 @@
/* second loop through signature to build all index and arg_flag
* loop also assigns args(up to the ->) to registers */
+ index = -1;
+ seen_arrow = 0;
/* account for passing invocant in-band */
if (pmc) {
indexes[0][0] = 0;
VTABLE_set_integer_keyed_int(interp, sigs[0], 0, PARROT_ARG_PMC);
CTX_REG_PMC(ctx, 0) = pmc;
+ n_regs_used[seen_arrow * 4 + REGNO_PMC]++;
index = 0;
}
- index = -1;
- seen_arrow = 0;
for (x = signature; *x != '\0'; x++) {
/* detect -> separator */
if (*x == '-') {