count future allocation toward GC trigger

svn: r16919
This commit is contained in:
Matthew Flatt 2009-11-20 13:00:31 +00:00
parent 684debc749
commit 314faa6690
4 changed files with 17 additions and 2 deletions

View File

@ -726,6 +726,12 @@ void *GC_make_jit_nursery_page() {
NewGC *gc = GC_get_GC();
mpage *new_mpage;
if((gc->gen0.current_size + THREAD_LOCAL_PAGE_SIZE) >= gc->gen0.max_size) {
if (!gc->dumping_avoid_collection)
garbage_collect(gc, 0);
}
gc->gen0.current_size += THREAD_LOCAL_PAGE_SIZE;
{
new_mpage = gen0_create_new_nursery_mpage(gc, THREAD_LOCAL_PAGE_SIZE);

View File

@ -177,6 +177,7 @@ Scheme_Config *scheme_init_error_escape_proc(Scheme_Config *config)
%c = unicode char
%d = int
%ld = long int
%lx = long int
%o = int, octal
%f = double
%% = percent
@ -333,9 +334,14 @@ static long sch_vsprintf(char *s, long maxlen, const char *msg, va_list args, ch
case 'l':
{
long d;
int as_hex;
as_hex = (msg[j] == 'x');
j++;
d = ints[ip++];
sprintf(buf, "%ld", d);
if (as_hex)
sprintf(buf, "%lx", d);
else
sprintf(buf, "%ld", d);
t = buf;
tlen = strlen(t);
}

View File

@ -721,6 +721,7 @@ void *worker_thread_future_loop(void *arg)
pthread_mutex_unlock(&g_future_queue_mutex);
ft->threadid = pthread_self();
ft->thread_short_id = id;
//Decrement the number of available pool threads
g_num_avail_threads--;
@ -992,7 +993,8 @@ static void do_invoke_rtcall(future_t *future)
}
scheme_log(scheme_main_logger, SCHEME_LOG_DEBUG, 0,
"future: waiting for runtime at %f: %s",
"future: %d waiting for runtime at %f: %s",
(long)future->thread_short_id,
future->time_of_request,
src);
}

View File

@ -52,6 +52,7 @@ typedef struct future_t {
int id;
pthread_t threadid;
int thread_short_id;
int status;
int work_completed;
pthread_cond_t *can_continue_cv;