Changeset 7863


Ignore:
Timestamp:
Dec 10, 2007, 8:36:28 AM (13 years ago)
Author:
gb
Message:

RELOCATABLE_FULLTAG_MASK has to include fulltag_symbol, fulltag_function
on x8664. Fix conditionalization of x8664 function vector (want to
skip over immediate words, update 'w0' and 'fulltag', then walk nodes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/lisp-kernel/image.c

    r7668 r7863  
    3131  ((1<<fulltag_cons)|(1<<fulltag_misc))
    3232#else
     33#ifdef X8664
     34#define RELOCATABLE_FULLTAG_MASK \
     35  ((1<<fulltag_cons)|(1<<fulltag_misc)|(1<<fulltag_symbol)|(1<<fulltag_function))
     36#else
    3337#define RELOCATABLE_FULLTAG_MASK \
    3438  ((1<<fulltag_cons)|(1<<fulltag_nil)|(1<<fulltag_misc))
     39#endif
    3540#endif
    3641
     
    5156    if (immheader_tag_p(fulltag)) {
    5257      start = (LispObj *)skip_over_ivector((natural)start, w0);
     58    } else {
    5359#ifdef X8664
    54     } else if (header_subtag(w0) == subtag_function) {
    55       int skip = (int) start[1];
     60      if (header_subtag(w0) == subtag_function) {
     61        int skip = (int) start[1];
    5662     
    57       start += skip;
    58       if (((LispObj)start) & node_size) {
    59         --start;
    60       }
    61 #endif
    62     } else {
     63        start += skip;
     64        if (((LispObj) start) & node_size) {
     65          --start;
     66        }
     67        w0 = *start;
     68        fulltag = fulltag_of(w0);
     69      }
     70#endif
     71
    6372      if ((w0 >= low) && (w0 < high) &&
    6473          ((1<<fulltag) & RELOCATABLE_FULLTAG_MASK)) {
Note: See TracChangeset for help on using the changeset viewer.