version 1.5, 2000/12/05 06:59:16 |
version 1.8, 2001/03/19 04:02:03 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM: OpenXM_contrib2/asir2000/engine/_distm.c,v 1.4 2000/11/07 06:06:39 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/engine/_distm.c,v 1.7 2001/01/11 02:26:49 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "inline.h" |
#include "inline.h" |
Line 71 DP _dp_free_list; |
|
Line 71 DP _dp_free_list; |
|
DL _dl_free_list; |
DL _dl_free_list; |
int current_dl_length; |
int current_dl_length; |
|
|
|
void _free_private_storage() |
|
{ |
|
_mp_free_list = 0; |
|
_dp_free_list = 0; |
|
_dl_free_list = 0; |
|
GC_gcollect(); |
|
} |
|
|
void _DL_alloc() |
void _DL_alloc() |
{ |
{ |
int *p; |
int *p; |
|
|
|
|
/* fprintf(stderr,"DL_alloc : %d \n",++DL_alloc_count); */ |
/* fprintf(stderr,"DL_alloc : %d \n",++DL_alloc_count); */ |
dl_len = (current_dl_length+1); |
dl_len = (current_dl_length+1); |
|
#if defined(LONG_IS_64BIT) |
|
if ( dl_len & 1 ) |
|
dl_len += 1; |
|
#endif |
p = (int *)GC_malloc(128*dl_len*sizeof(int)); |
p = (int *)GC_malloc(128*dl_len*sizeof(int)); |
for ( i = 0; i < 128; i++, p += dl_len ) { |
for ( i = 0; i < 128; i++, p += dl_len ) { |
*(DL *)p = _dl_free_list; |
*(DL *)p = _dl_free_list; |
|
|
DP *r; |
DP *r; |
{ |
{ |
MP m,mr0,mr; |
MP m,mr0,mr; |
|
DL t; |
|
|
if ( !p ) |
if ( !p ) |
*r = 0; |
*r = 0; |
else { |
else { |
current_dl_length = NV(p); |
/* XXX : dummy call to set current_dl_length */ |
|
_NEWDL_NOINIT(t,NV(p)); |
|
|
for ( m = BDY(p), mr0 = 0; m; m = NEXT(m) ) { |
for ( m = BDY(p), mr0 = 0; m; m = NEXT(m) ) { |
_NEXTMP(mr0,mr); |
_NEXTMP(mr0,mr); |
dlto_dl(m->dl,&mr->dl); |
dlto_dl(m->dl,&mr->dl); |