The slot accessors written in C now rely on slot-value to avoid infinite recursion

This commit is contained in:
Juan Jose Garcia Ripoll 2012-10-11 23:38:44 +02:00
parent ea555590b2
commit 69651e3073
3 changed files with 4 additions and 2 deletions

View file

@ -46,7 +46,7 @@ slot_method_name(cl_object gfun, cl_object args)
cl_object first = ECL_CONS_CAR(methods);
cl_object slotd = _ecl_funcall3(@'slot-value', first,
@'clos::slot-definition');
return _ecl_funcall2(@'clos::slot-definition-name', slotd);
return _ecl_funcall3(@'slot-value', slotd, @'clos::name');
}
}
@ -61,7 +61,7 @@ slot_method_index(cl_object gfun, cl_object instance, cl_object args)
ECL_CLASS_OF(instance),
@'clos::slot-table');
cl_object slotd = ecl_gethash_safe(slot_name, table, OBJNULL);
return _ecl_funcall2(@'clos::slot-definition-location', slotd);
return _ecl_funcall3(@'slot-value', slotd, @'ext::location');
}
}

View file

@ -1686,6 +1686,7 @@ cl_symbols[] = {
{CLOS_ "METHOD-GENERIC-FUNCTION", CLOS_ORDINARY, NULL, -1, OBJNULL},
{CLOS_ "METHOD-LAMBDA-LIST", CLOS_ORDINARY, NULL, -1, OBJNULL},
{CLOS_ "METHOD-SPECIALIZERS", CLOS_ORDINARY, NULL, -1, OBJNULL},
{CLOS_ "NAME", CLOS_ORDINARY, NULL, -1, OBJNULL},
{CLOS_ "READER-METHOD-CLASS", CLOS_ORDINARY, NULL, -1, OBJNULL},
{CLOS_ "REMOVE-DEPENDENT", CLOS_ORDINARY, NULL, -1, OBJNULL},
{CLOS_ "REMOVE-DIRECT-METHOD", CLOS_ORDINARY, NULL, -1, OBJNULL},

View file

@ -1686,6 +1686,7 @@ cl_symbols[] = {
{CLOS_ "METHOD-GENERIC-FUNCTION",NULL},
{CLOS_ "METHOD-LAMBDA-LIST",NULL},
{CLOS_ "METHOD-SPECIALIZERS",NULL},
{CLOS_ "NAME",NULL},
{CLOS_ "READER-METHOD-CLASS",NULL},
{CLOS_ "REMOVE-DEPENDENT",NULL},
{CLOS_ "REMOVE-DIRECT-METHOD",NULL},