Changeset 6327


Ignore:
Timestamp:
Apr 22, 2007, 10:42:42 AM (15 years ago)
Author:
gb
Message:

Fix tra checking.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/x8664-call/ccl/lisp-kernel/x86-gc.c

    r6315 r6327  
    101101    */
    102102    {
    103       int disp = ((int *)n)[-1];
     103      int disp = 0;
    104104      LispObj m = n;
    105105
    106       if (disp > 0) {
    107         n = m - disp;
    108       }
    109       if ((disp <= 0) ||
     106      if ((*((unsigned short *)n) == RECOVER_FN_FROM_RIP_WORD0) &&
     107          (*((unsigned char *)(n+2)) == RECOVER_FN_FROM_RIP_BYTE2)) {
     108        disp = (*(int *) (n+3));
     109        n = RECOVER_FN_FROM_RIP_LENGTH+m+disp;
     110      }
     111      if ((disp == 0) ||
    110112          (fulltag_of(n) != fulltag_function) ||
    111113          (heap_area_containing((BytePtr)ptr_from_lispobj(n)) != a)) {
    112         Bug(NULL, "TRA at 0x%lx has bad displacement ~d\n", n, disp);
     114        Bug(NULL, "TRA at 0x%lx has bad displacement %d\n", n, disp);
    113115      }
    114116    }
Note: See TracChangeset for help on using the changeset viewer.