[svn:parrot] r44941 - branches/pcc_hackathon_6Mar10/src/ops

chromatic at svn.parrot.org chromatic at svn.parrot.org
Mon Mar 15 17:47:45 UTC 2010


Author: chromatic
Date: Mon Mar 15 17:47:45 2010
New Revision: 44941
URL: https://trac.parrot.org/parrot/changeset/44941

Log:
[ops] Made set_returns op clear current object so that the new PCC sig object
won't unshift in the invocant.  That'd be one positional too many to return.

Modified:
   branches/pcc_hackathon_6Mar10/src/ops/core.ops

Modified: branches/pcc_hackathon_6Mar10/src/ops/core.ops
==============================================================================
--- branches/pcc_hackathon_6Mar10/src/ops/core.ops	Mon Mar 15 17:47:38 2010	(r44940)
+++ branches/pcc_hackathon_6Mar10/src/ops/core.ops	Mon Mar 15 17:47:45 2010	(r44941)
@@ -536,13 +536,17 @@
 }
 
 op set_returns(inconst PMC) :flow {
-    opcode_t * const raw_args = CUR_OPCODE;
-    PMC * const signature = $1;
-    PMC * call_sig;
+    opcode_t * const raw_args  = CUR_OPCODE;
+    PMC      * const signature = $1;
+    PMC      *       call_sig;
     INTVAL argc;
 
-    call_sig = Parrot_pcc_build_sig_object_from_op(interp,
-            PMCNULL, signature, raw_args);
+    /* don't let PCC unshift the invocant into the returns */
+    interp->current_object = PMCNULL;
+
+    call_sig = Parrot_pcc_build_sig_object_from_op(interp, PMCNULL,
+                     signature, raw_args);
+
     Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), call_sig);
 
     argc = VTABLE_elements(interp, signature);


More information about the parrot-commits mailing list