[svn:parrot] r43089 - branches/context_unify3/src/ops
bacek at svn.parrot.org
bacek at svn.parrot.org
Wed Dec 16 08:33:43 UTC 2009
Author: bacek
Date: Wed Dec 16 08:33:43 2009
New Revision: 43089
URL: https://trac.parrot.org/parrot/changeset/43089
Log:
Merge CallSignature for tailcallmethod(cc).
Modified:
branches/context_unify3/src/ops/object.ops
Modified: branches/context_unify3/src/ops/object.ops
==============================================================================
--- branches/context_unify3/src/ops/object.ops Wed Dec 16 08:33:22 2009 (r43088)
+++ branches/context_unify3/src/ops/object.ops Wed Dec 16 08:33:43 2009 (r43089)
@@ -129,6 +129,7 @@
PMC * const object = $1;
STRING * const meth = $2;
PMC * const method_pmc = VTABLE_find_method(interp, object, meth);
+ PMC * const ctx = CURRENT_CONTEXT(interp);
opcode_t *dest;
@@ -138,9 +139,10 @@
VTABLE_get_string(interp, VTABLE_get_class(interp, object)));
}
else {
- interp->current_cont = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
- PObj_get_FLAGS(interp->current_cont) |= SUB_FLAG_TAILCALL;
+ interp->current_cont = Parrot_pcc_get_continuation(interp, ctx);
+ SUB_FLAG_TAILCALL_SET(interp->current_cont);
interp->current_object = object;
+ Parrot_pcc_merge_signature_for_tailcall(interp, ctx, Parrot_pcc_get_signature(interp, ctx));
dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
}
goto ADDRESS(dest);
@@ -150,12 +152,14 @@
opcode_t * const next = expr NEXT();
PMC * const object = $1;
PMC * const method_pmc = $2;
+ PMC * const ctx = CURRENT_CONTEXT(interp);
opcode_t *dest;
- interp->current_cont = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
- PObj_get_FLAGS(interp->current_cont) |= SUB_FLAG_TAILCALL;
+ interp->current_cont = Parrot_pcc_get_continuation(interp, ctx);
+ SUB_FLAG_TAILCALL_SET(interp->current_cont);
interp->current_object = object;
+ Parrot_pcc_merge_signature_for_tailcall(interp, ctx, Parrot_pcc_get_signature(interp, ctx));
dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
goto ADDRESS(dest);
}
More information about the parrot-commits
mailing list