Author: allison
Date: Wed Jan 7 10:38:08 2009
New Revision: 35165
Modified:
branches/cc_restart/src/inter_call.c
Log:
[calling_conventions] Make an exception for method calls, not to use runops.
Modified: branches/cc_restart/src/inter_call.c
==============================================================================
--- branches/cc_restart/src/inter_call.c (original)
+++ branches/cc_restart/src/inter_call.c Wed Jan 7 10:38:08 2009
@@ -2728,8 +2728,10 @@
/* Invoke the function */
dest = VTABLE_invoke(interp, sub_obj, NULL);
- /* PIR Subs need runops to run their opcodes. */
- if (sub_obj->vtable->base_type == enum_class_Sub) {
+ /* PIR Subs need runops to run their opcodes. Methods and NCI subs
+ * don't. */
+ if (sub_obj->vtable->base_type == enum_class_Sub
+ && PMC_IS_NULL(interp->current_object)) {
INTVAL old_core = interp->run_core;
opcode_t offset = dest - interp->code->base.data;