version 1.5, 2002/07/24 08:00:10 |
version 1.6, 2003/06/24 05:11:33 |
|
|
ptr_t result; |
ptr_t result; |
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(); |
if (SMALL_OBJ(lb)) { |
if (SMALL_OBJ(lb)) { |
DISABLE_SIGNALS(); |
DISABLE_SIGNALS(); |
|
|
return(GENERAL_MALLOC((word)lb, NORMAL)); |
return(GENERAL_MALLOC((word)lb, NORMAL)); |
} |
} |
/* See above comment on signals. */ |
/* See above comment on signals. */ |
|
GC_ASSERT(0 == obj_link(op) |
|
|| (word)obj_link(op) |
|
<= (word)GC_greatest_plausible_heap_addr |
|
&& (word)obj_link(op) |
|
>= (word)GC_least_plausible_heap_addr); |
*opp = obj_link(op); |
*opp = obj_link(op); |
obj_link(op) = 0; |
obj_link(op) = 0; |
GC_words_allocd += lw; |
GC_words_allocd += lw; |
|
|
/* Required by ANSI. It's not my fault ... */ |
/* Required by ANSI. It's not my fault ... */ |
h = HBLKPTR(p); |
h = HBLKPTR(p); |
hhdr = HDR(h); |
hhdr = HDR(h); |
|
GC_ASSERT(GC_base(p) == p); |
# if defined(REDIRECT_MALLOC) && \ |
# if defined(REDIRECT_MALLOC) && \ |
(defined(GC_SOLARIS_THREADS) || defined(GC_LINUX_THREADS) \ |
(defined(GC_SOLARIS_THREADS) || defined(GC_LINUX_THREADS) \ |
|| defined(__MINGW32__)) /* Should this be MSWIN32 in general? */ |
|| defined(__MINGW32__)) /* Should this be MSWIN32 in general? */ |
Line 461 void GC_free_inner(GC_PTR p) |
|
Line 467 void GC_free_inner(GC_PTR p) |
|
} |
} |
#endif /* THREADS */ |
#endif /* THREADS */ |
|
|
# ifdef REDIRECT_MALLOC |
# if defined(REDIRECT_MALLOC) && !defined(REDIRECT_FREE) |
|
# define REDIRECT_FREE GC_free |
|
# endif |
|
# ifdef REDIRECT_FREE |
# ifdef __STDC__ |
# ifdef __STDC__ |
void free(GC_PTR p) |
void free(GC_PTR p) |
# else |
# else |
Line 470 void GC_free_inner(GC_PTR p) |
|
Line 479 void GC_free_inner(GC_PTR p) |
|
# endif |
# endif |
{ |
{ |
# ifndef IGNORE_FREE |
# ifndef IGNORE_FREE |
GC_free(p); |
REDIRECT_FREE(p); |
# endif |
# endif |
} |
} |
# endif /* REDIRECT_MALLOC */ |
# endif /* REDIRECT_MALLOC */ |