[svn:parrot] r43044 - branches/context_unify3/src/ops
bacek at svn.parrot.org
bacek at svn.parrot.org
Mon Dec 14 12:43:58 UTC 2009
Author: bacek
Date: Mon Dec 14 12:43:57 2009
New Revision: 43044
URL: https://trac.parrot.org/parrot/changeset/43044
Log:
Update callmethod(cc) to properly use CallContext.
Modified:
branches/context_unify3/src/ops/object.ops
Modified: branches/context_unify3/src/ops/object.ops
==============================================================================
--- branches/context_unify3/src/ops/object.ops Mon Dec 14 12:43:38 2009 (r43043)
+++ branches/context_unify3/src/ops/object.ops Mon Dec 14 12:43:57 2009 (r43044)
@@ -50,6 +50,7 @@
PMC * const object = $1;
STRING * const meth = $2;
opcode_t * const next = expr NEXT();
+ PMC * call_object = Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp));
PMC * const method_pmc = VTABLE_find_method(interp, object, meth);
opcode_t *dest = NULL;
@@ -69,8 +70,7 @@
}
}
else {
- interp->current_object = object;
- interp->current_cont = NEED_CONTINUATION;
+ Parrot_pcc_prepare_call(interp, call_object, new_ret_continuation_pmc(interp, next), object);
dest = VTABLE_invoke(interp, method_pmc, next);
}
goto ADDRESS(dest);
@@ -79,9 +79,9 @@
op callmethodcc(invar PMC, invar PMC) :object_base :flow {
opcode_t *dest;
opcode_t * const next = expr NEXT();
+ PMC * call_object = Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp));
- interp->current_object = $1;
- interp->current_cont = NEED_CONTINUATION;
+ Parrot_pcc_prepare_call(interp, call_object, new_ret_continuation_pmc(interp, next), $1);
dest = VTABLE_invoke(interp, $2, next);
goto ADDRESS(dest);
@@ -91,6 +91,7 @@
PMC * const object = $1;
STRING * const meth = $2;
opcode_t * const next = expr NEXT();
+ PMC * call_object = Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp));
PMC * const method_pmc = VTABLE_find_method(interp, object, meth);
opcode_t *dest = NULL;
@@ -102,8 +103,7 @@
VTABLE_get_string(interp, VTABLE_get_class(interp, object)));
}
else {
- interp->current_object = object;
- interp->current_cont = $3;
+ Parrot_pcc_prepare_call(interp, call_object, $3, object);
dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
}
goto ADDRESS(dest);
@@ -113,11 +113,11 @@
PMC * const object = $1;
PMC * const method_pmc = $2;
opcode_t * const next = expr NEXT();
+ PMC * call_object = Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp));
opcode_t *dest;
- interp->current_object = object;
- interp->current_cont = $3;
+ Parrot_pcc_prepare_call(interp, call_object, $3, object);
dest = (opcode_t *)VTABLE_invoke(interp, method_pmc, next);
goto ADDRESS(dest);
}
More information about the parrot-commits
mailing list