[BACK]Return to mallocx.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / gc

Diff for /OpenXM_contrib2/asir2000/gc/mallocx.c between version 1.5 and 1.6

version 1.5, 2002/07/24 08:00:10 version 1.6, 2003/06/24 05:11:33
Line 142  int obj_kind;
Line 142  int obj_kind;
     }      }
 }  }
   
 # if defined(REDIRECT_MALLOC) || defined(REDIRECT_REALLOC)  # if defined(REDIRECT_MALLOC) && !defined(REDIRECT_REALLOC)
   #   define REDIRECT_REALLOC GC_realloc
   # endif
   
   # ifdef REDIRECT_REALLOC
 # ifdef __STDC__  # ifdef __STDC__
     GC_PTR realloc(GC_PTR p, size_t lb)      GC_PTR realloc(GC_PTR p, size_t lb)
 # else  # else
Line 151  int obj_kind;
Line 155  int obj_kind;
     size_t lb;      size_t lb;
 # endif  # endif
   {    {
 #   ifdef REDIRECT_REALLOC      return(REDIRECT_REALLOC(p, lb));
       return(REDIRECT_REALLOC(p, lb));  
 #   else  
       return(GC_realloc(p, lb));  
 #   endif  
   }    }
 # endif /* REDIRECT_MALLOC */  # endif /* REDIRECT_REALLOC */
   
   
 /* The same thing, except caller does not hold allocation lock. */  /* The same thing, except caller does not hold allocation lock. */
Line 177  register int k;
Line 177  register int k;
     lw = ROUNDED_UP_WORDS(lb);      lw = ROUNDED_UP_WORDS(lb);
     n_blocks = OBJ_SZ_TO_BLOCKS(lw);      n_blocks = OBJ_SZ_TO_BLOCKS(lw);
     init = GC_obj_kinds[k].ok_init;      init = GC_obj_kinds[k].ok_init;
     if (GC_debugging_started) GC_print_all_smashed();      if (GC_have_errors) GC_print_all_errors();
     GC_INVOKE_FINALIZERS();      GC_INVOKE_FINALIZERS();
     DISABLE_SIGNALS();      DISABLE_SIGNALS();
     LOCK();      LOCK();
Line 287  register struct obj_kind * kind = GC_obj_kinds + k;
Line 287  register struct obj_kind * kind = GC_obj_kinds + k;
 register ptr_t op;  register ptr_t op;
 DCL_LOCK_STATE;  DCL_LOCK_STATE;
   
     if (GC_debugging_started) GC_print_all_smashed();      if (GC_have_errors) GC_print_all_errors();
     GC_INVOKE_FINALIZERS();      GC_INVOKE_FINALIZERS();
     DISABLE_SIGNALS();      DISABLE_SIGNALS();
     LOCK();      LOCK();
Line 356  DCL_LOCK_STATE;
Line 356  DCL_LOCK_STATE;
         return;          return;
     }      }
     lw = ALIGNED_WORDS(lb);      lw = ALIGNED_WORDS(lb);
     if (GC_debugging_started) GC_print_all_smashed();      if (GC_have_errors) GC_print_all_errors();
     GC_INVOKE_FINALIZERS();      GC_INVOKE_FINALIZERS();
     DISABLE_SIGNALS();      DISABLE_SIGNALS();
     LOCK();      LOCK();
Line 578  DCL_LOCK_STATE;
Line 578  DCL_LOCK_STATE;
         return((GC_PTR) op);          return((GC_PTR) op);
     }      }
 }  }
   
   #ifdef __STDC__
   /* Not well tested nor integrated.      */
   /* Debug version is tricky and currently missing.       */
   #include <limits.h>
   
   GC_PTR GC_memalign(size_t align, size_t lb)
   {
       size_t new_lb;
       size_t offset;
       ptr_t result;
   
   #   ifdef ALIGN_DOUBLE
           if (align <= WORDS_TO_BYTES(2) && lb > align) return GC_malloc(lb);
   #   endif
       if (align <= WORDS_TO_BYTES(1)) return GC_malloc(lb);
       if (align >= HBLKSIZE/2 || lb >= HBLKSIZE/2) {
           if (align > HBLKSIZE) return GC_oom_fn(LONG_MAX-1024) /* Fail */;
           return GC_malloc(lb <= HBLKSIZE? HBLKSIZE : lb);
               /* Will be HBLKSIZE aligned.        */
       }
       /* We could also try to make sure that the real rounded-up object size */
       /* is a multiple of align.  That would be correct up to HBLKSIZE.      */
       new_lb = lb + align - 1;
       result = GC_malloc(new_lb);
       offset = (word)result % align;
       if (offset != 0) {
           offset = align - offset;
           if (!GC_all_interior_pointers) {
               if (offset >= VALID_OFFSET_SZ) return GC_malloc(HBLKSIZE);
               GC_register_displacement(offset);
           }
       }
       result = (GC_PTR) ((ptr_t)result + offset);
       GC_ASSERT((word)result % align == 0);
       return result;
   }
   #endif
   
 # ifdef ATOMIC_UNCOLLECTABLE  # ifdef ATOMIC_UNCOLLECTABLE
 /* Allocate lb bytes of pointerfree, untraced, uncollectable data       */  /* Allocate lb bytes of pointerfree, untraced, uncollectable data       */

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>