[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