apply: generic functions are dispatched via the entry point

Previously standard and restricted dispatch was dispatched via
_ecl_standard_dispatch, but that adds a dependency on gfun.d.
This commit is contained in:
Daniel Kochmański 2026-03-04 09:02:39 +01:00
parent 937b4c4e36
commit 7334f7fab3
2 changed files with 5 additions and 4 deletions

View file

@ -393,6 +393,7 @@ ecl_alloc_instance(cl_index slots)
i = ecl_alloc_object(t_instance);
i->instance.slots = (cl_object *)ecl_alloc(sizeof(cl_object) * slots);
i->instance.length = slots;
i->instance.isgf = ECL_NOT_FUNCALLABLE;
i->instance.entry = FEnot_funcallable_vararg;
i->instance.slotds = ECL_UNBOUND;
return i;

View file

@ -90,13 +90,13 @@ ecl_apply_from_stack_frame(cl_object frame, cl_object x)
break;
case t_instance:
switch (fun->instance.isgf) {
case ECL_STANDARD_DISPATCH:
case ECL_RESTRICTED_DISPATCH:
ret = _ecl_standard_dispatch(frame, fun);
break;
case ECL_USER_DISPATCH:
fun = fun->instance.slots[fun->instance.length - 1];
goto AGAIN;
case ECL_STANDARD_DISPATCH:
case ECL_RESTRICTED_DISPATCH:
/* ret = _ecl_standard_dispatch(frame, fun); */
/* break; */
case ECL_READER_DISPATCH:
case ECL_WRITER_DISPATCH:
ret = APPLY(narg, fun->instance.entry, sp);