mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-03-14 00:40:47 -07:00
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:
parent
937b4c4e36
commit
7334f7fab3
2 changed files with 5 additions and 4 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue