130 |
if (ptr) |
if (ptr) |
131 |
return ptr; |
return ptr; |
132 |
|
|
133 |
|
scm_i_thread_put_to_sleep (); |
134 |
|
|
135 |
scm_i_sweep_all_segments ("realloc"); |
scm_i_sweep_all_segments ("realloc"); |
136 |
|
|
137 |
SCM_SYSCALL (ptr = realloc (mem, size)); |
SCM_SYSCALL (ptr = realloc (mem, size)); |
138 |
if (ptr) |
if (ptr) |
139 |
return ptr; |
{ |
140 |
|
scm_i_thread_wake_up (); |
141 |
|
return ptr; |
142 |
|
} |
143 |
|
|
144 |
scm_igc ("realloc"); |
scm_igc ("realloc"); |
145 |
scm_i_sweep_all_segments ("realloc"); |
scm_i_sweep_all_segments ("realloc"); |
146 |
|
|
147 |
|
scm_i_thread_wake_up (); |
148 |
|
|
149 |
SCM_SYSCALL (ptr = realloc (mem, size)); |
SCM_SYSCALL (ptr = realloc (mem, size)); |
150 |
if (ptr) |
if (ptr) |
151 |
return ptr; |
return ptr; |
215 |
*/ |
*/ |
216 |
if (scm_mallocated > scm_mtrigger) |
if (scm_mallocated > scm_mtrigger) |
217 |
{ |
{ |
218 |
unsigned long prev_alloced = scm_mallocated; |
unsigned long prev_alloced; |
219 |
float yield; |
float yield; |
220 |
|
|
221 |
|
scm_i_thread_put_to_sleep (); |
222 |
|
|
223 |
|
prev_alloced = scm_mallocated; |
224 |
scm_igc (what); |
scm_igc (what); |
225 |
scm_i_sweep_all_segments("mtrigger"); |
scm_i_sweep_all_segments ("mtrigger"); |
226 |
|
|
227 |
yield = ((float)prev_alloced - (float) scm_mallocated) |
yield = ((float)prev_alloced - (float) scm_mallocated) |
228 |
/ (float) prev_alloced; |
/ (float) prev_alloced; |
253 |
fprintf (stderr, "Mtrigger sweep: ineffective. New trigger %d\n", scm_mtrigger); |
fprintf (stderr, "Mtrigger sweep: ineffective. New trigger %d\n", scm_mtrigger); |
254 |
#endif |
#endif |
255 |
} |
} |
256 |
|
|
257 |
|
scm_i_thread_wake_up (); |
258 |
} |
} |
259 |
|
|
260 |
#ifdef GUILE_DEBUG_MALLOC |
#ifdef GUILE_DEBUG_MALLOC |