APPLY_HOOK ();
NEXT;
}
+ if (SCM_STRUCTP (x) && SCM_OBJ_CLASS_FLAGS (x) & SCM_CLASSF_PURE_GENERIC)
+ {
+ SCM args = SCM_EOL;
+ int n = nargs;
+ SCM* walk = sp;
+ SYNC_REGISTER ();
+ while (n--)
+ args = scm_cons (*walk--, args);
+ *walk = scm_mcache_compute_cmethod (SCM_ENTITY_PROCEDURE (x), args);
+ goto vm_call;
+ }
/*
* Other interpreted or compiled call
*/
APPLY_HOOK ();
NEXT;
}
+ if (SCM_STRUCTP (x) && SCM_OBJ_CLASS_FLAGS (x) & SCM_CLASSF_PURE_GENERIC)
+ {
+ SCM args = SCM_EOL;
+ int n = nargs;
+ SCM* walk = sp;
+ SYNC_REGISTER ();
+ while (n--)
+ args = scm_cons (*walk--, args);
+ *walk = scm_mcache_compute_cmethod (SCM_ENTITY_PROCEDURE (x), args);
+ goto vm_goto_args;
+ }
/*
* Other interpreted or compiled call
FETCH_OFFSET (offset);
mvra = ip + offset;
+ vm_mv_call:
x = sp[-nargs];
/*
APPLY_HOOK ();
NEXT;
}
+ if (SCM_STRUCTP (x) && SCM_OBJ_CLASS_FLAGS (x) & SCM_CLASSF_PURE_GENERIC)
+ {
+ SCM args = SCM_EOL;
+ int n = nargs;
+ SCM* walk = sp;
+ SYNC_REGISTER ();
+ while (n--)
+ args = scm_cons (*walk--, args);
+ *walk = scm_mcache_compute_cmethod (SCM_ENTITY_PROCEDURE (x), args);
+ goto vm_mv_call;
+ }
/*
* Other interpreted or compiled call
*/