Author: Whiteknight
Date: Sun Nov 30 08:35:54 2008
New Revision: 33373

Modified:
   branches/call_conv_redux/src/inter_call.c

Log:
[call_conv_redux] update count_signature_elements

Modified: branches/call_conv_redux/src/inter_call.c
==============================================================================
--- branches/call_conv_redux/src/inter_call.c   (original)
+++ branches/call_conv_redux/src/inter_call.c   Sun Nov 30 08:35:54 2008
@@ -1997,13 +1997,23 @@
                 break;
             case 'P':
                 arg_ret_cnt[seen_arrow]++;
-                max_regs[seen_arrow * 4 + REGNO_PMC]++;
+                {
+                    /* Lookahead to see if PMC is marked as invocant */
+                    if (*(++x) == 'i') {
+                        max_regs[REGNO_PMC]++;
+                    }
+                    else {
+                        x--; /* Undo lookahead */
+                        max_regs[seen_arrow * 4 + REGNO_PMC]++;
+                    }
+                }
                 break;
             case 'f':
             case 'n':
             case 's':
             case 'o':
             case 'p':
+            case 'i':
                 break;
             default:
                 Parrot_ex_throw_from_c_args(interp, NULL,

Reply via email to