Changeset 10726

Show
Ignore:
Timestamp:
04/28/05 20:25:48 (4 years ago)
Author:
rtoy
Message:

Should close up any open alloc regions before purification. This bug
was mentioned by Dan Barlow on #lisp.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/lisp/purify.c

    r10424 r10550  
    263263      if ((int)pointer != ((int)start_addr+type_FunctionPointer)) { 
    264264        if (pointer_filter_verbose) 
    265           fprintf(stderr,"*Wf2: %x %x %x\n", pointer, start_addr, *start_addr); 
     265          fprintf(stderr,"*Wf2: %p %p %lx\n", pointer, start_addr, *start_addr); 
    266266        return FALSE; 
    267267      } 
     
    269269    default: 
    270270      if (pointer_filter_verbose) 
    271         fprintf(stderr,"*Wf3: %x %x %x\n", pointer, start_addr, *start_addr); 
     271        fprintf(stderr,"*Wf3: %p %p %lx\n", pointer, start_addr, *start_addr); 
    272272      return FALSE; 
    273273    } 
     
    276276    if ((int)pointer != ((int)start_addr+type_ListPointer)) { 
    277277      if (pointer_filter_verbose) 
    278         fprintf(stderr,"*Wl1: %x %x %x\n", pointer, start_addr, *start_addr); 
     278        fprintf(stderr,"*Wl1: %p %p %lx\n", pointer, start_addr, *start_addr); 
    279279      return FALSE; 
    280280    } 
     
    291291    else { 
    292292      if (pointer_filter_verbose) 
    293         fprintf(stderr,"*Wl2: %x %x %x\n", pointer, start_addr, *start_addr); 
     293        fprintf(stderr,"*Wl2: %p %p %lx\n", pointer, start_addr, *start_addr); 
    294294      return FALSE; 
    295295    } 
     
    297297    if ((int)pointer != ((int)start_addr+type_InstancePointer)) { 
    298298      if (pointer_filter_verbose) 
    299         fprintf(stderr,"*Wi1: %x %x %x\n", pointer, start_addr, *start_addr); 
     299        fprintf(stderr,"*Wi1: %p %p %lx\n", pointer, start_addr, *start_addr); 
    300300      return FALSE; 
    301301    } 
    302302    if (TypeOf(start_addr[0]) != type_InstanceHeader) { 
    303303      if (pointer_filter_verbose) 
    304         fprintf(stderr,"*Wi2: %x %x %x\n", pointer, start_addr, *start_addr); 
     304        fprintf(stderr,"*Wi2: %p %p %lx\n", pointer, start_addr, *start_addr); 
    305305      return FALSE; 
    306306    } 
     
    309309    if ((int)pointer != ((int)start_addr+type_OtherPointer)) { 
    310310      if (pointer_filter_verbose) 
    311         fprintf(stderr,"*Wo1: %x %x %x\n", pointer, start_addr, *start_addr); 
     311        fprintf(stderr,"*Wo1: %p %p %lx\n", pointer, start_addr, *start_addr); 
    312312      return FALSE; 
    313313    } 
     
    315315    if(Pointerp(start_addr[0]) || ((start_addr[0] & 3) == 0)) { 
    316316      if (pointer_filter_verbose) 
    317         fprintf(stderr,"*Wo2: %x %x %x\n", pointer, start_addr, *start_addr); 
     317        fprintf(stderr,"*Wo2: %p %p %lx\n", pointer, start_addr, *start_addr); 
    318318      return FALSE; 
    319319    } 
     
    322322    case type_BaseChar: 
    323323      if (pointer_filter_verbose) 
    324         fprintf(stderr,"*Wo3: %x %x %x\n", pointer, start_addr, *start_addr); 
     324        fprintf(stderr,"*Wo3: %p %p %lx\n", pointer, start_addr, *start_addr); 
    325325      return FALSE; 
    326326       
     
    332332    case type_DylanFunctionHeader: 
    333333      if (pointer_filter_verbose) 
    334         fprintf(stderr,"*Wo4: %x %x %x\n", pointer, start_addr, *start_addr); 
     334        fprintf(stderr,"*Wo4: %p %p %lx\n", pointer, start_addr, *start_addr); 
    335335      return FALSE; 
    336336       
    337337    case type_InstanceHeader: 
    338338      if (pointer_filter_verbose) 
    339         fprintf(stderr,"*Wo5: %x %x %x\n", pointer, start_addr, *start_addr); 
     339        fprintf(stderr,"*Wo5: %p %p %lx\n", pointer, start_addr, *start_addr); 
    340340      return FALSE; 
    341341       
     
    408408    default: 
    409409      if (pointer_filter_verbose) 
    410         fprintf(stderr,"*Wo6: %x %x %x\n", pointer, start_addr, *start_addr); 
     410        fprintf(stderr,"*Wo6: %p %p %lx\n", pointer, start_addr, *start_addr); 
    411411      return FALSE; 
    412412    } 
     
    414414  default: 
    415415    if (pointer_filter_verbose) 
    416       fprintf(stderr,"*W?: %x %x %x\n", pointer, start_addr, *start_addr); 
     416      fprintf(stderr,"*W?: %p %p %lx\n", pointer, start_addr, *start_addr); 
    417417    return FALSE; 
    418418  } 
     
    484484    pscav(&code_obj, 1, FALSE); 
    485485    if (pointer_filter_verbose) 
    486       fprintf(stderr, "*C moved RA %x to %x; for code object %x to %x\n", 
     486      fprintf(stderr, "*C moved RA %lx to %x; for code object %p to %lx\n", 
    487487              *valid_stack_ra_locations[i], 
    488488              (int) (*valid_stack_ra_locations[i]) 
     
    592592      /* Copy it. */ 
    593593      bcopy(old, new, nwords * sizeof(lispobj)); 
    594        
     594 
    595595      /* Deposit forwarding pointer. */ 
    596596      result = (lispobj)new | LowtagOf(thing); 
     
    670670 
    671671    vector = (struct vector *)PTR(thing); 
     672#ifdef __x86_64     
     673    nwords = 2 + (CEILING((fixnum_value(vector->length)+extra)*bits,64)>>6); 
     674#else 
    672675    nwords = 2 + (CEILING((fixnum_value(vector->length)+extra)*bits,32)>>5); 
     676#endif 
    673677 
    674678    if (boxed && !constant) { 
     
    743747       and apply a fixup at each address. */ 
    744748    int length = fixnum_value(fixups_vector->length); 
     749    /* offset_vector still has 32-bit elements on amd64. 
     750       Eventually we will make this consistent with internals.h */ 
    745751    unsigned int *offset_vector = fixups_vector->data; 
    746752    int i; 
     
    10181024 
    10191025      case type_SimpleVector: 
     1026#ifdef __x86_64     
     1027        return ptrans_vector(thing, 64, 0, TRUE, constant); 
     1028#else 
    10201029        return ptrans_vector(thing, 32, 0, TRUE, constant); 
     1030#endif 
    10211031 
    10221032      case type_SimpleArrayUnsignedByte2: