Changeset 14944


Ignore:
Timestamp:
Aug 18, 2011, 9:29:58 PM (8 years ago)
Author:
gb
Message:

In all three versions of sprint_specializers_list(), try to print
EQL specializers sanely.
(May still want to do something to print ObjC class names.)

Location:
trunk/source/lisp-kernel
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/arm_print.c

    r14599 r14944  
    137137      the_car = car(o);
    138138      if (fulltag_of(the_car) == fulltag_misc) {
    139         sprint_lisp_object(deref(deref(the_car,3), 4), depth);
     139        LispObj header = header_of(the_car);
     140        unsigned subtag = header_subtag(header);
     141
     142        if (subtag == subtag_instance) {
     143          if (unbox_fixnum(deref(the_car,1)) < (1<<20)) {
     144            sprint_lisp_object(deref(deref(the_car,3), 4), depth);
     145          } else {
     146            /* An EQL specializer */
     147            add_c_string("(EQL ");
     148            sprint_lisp_object(deref(deref(the_car,3), 3), depth);
     149            add_char(')');
     150          }
     151        } else {
     152          sprint_lisp_object(the_car, depth);
     153        }
    140154      } else {
    141155        sprint_lisp_object(the_car, depth);
  • trunk/source/lisp-kernel/ppc_print.c

    r14599 r14944  
    137137      the_car = car(o);
    138138      if (fulltag_of(the_car) == fulltag_misc) {
    139         sprint_lisp_object(deref(deref(the_car,3), 4), depth);
     139        LispObj header = header_of(the_car);
     140        unsigned subtag = header_subtag(header);
     141
     142        if (subtag == subtag_instance) {
     143          if (unbox_fixnum(deref(the_car,1)) < (1<<20)) {
     144            sprint_lisp_object(deref(deref(the_car,3), 4), depth);
     145          } else {
     146            /* An EQL specializer */
     147            add_c_string("(EQL ");
     148            sprint_lisp_object(deref(deref(the_car,3), 3), depth);
     149            add_char(')');
     150          }
     151        } else {
     152          sprint_lisp_object(the_car, depth);
     153        }
    140154      } else {
    141155        sprint_lisp_object(the_car, depth);
  • trunk/source/lisp-kernel/x86_print.c

    r14716 r14944  
    164164
    165165        if (subtag == subtag_instance) {
    166           sprint_lisp_object(deref(deref(the_car,3), 4), depth);
     166          if (unbox_fixnum(deref(the_car,1)) < (1<<20)) {
     167            sprint_lisp_object(deref(deref(the_car,3), 4), depth);
     168          } else {
     169            /* An EQL specializer */
     170            add_c_string("(EQL ");
     171            sprint_lisp_object(deref(deref(the_car,3), 3), depth);
     172            add_char(')');
     173          }
    167174        } else {
    168175          sprint_lisp_object(the_car, depth);
Note: See TracChangeset for help on using the changeset viewer.