diff --git a/src/mzscheme/gc2/newgc.c b/src/mzscheme/gc2/newgc.c index 63c8163c91..679875c40a 100644 --- a/src/mzscheme/gc2/newgc.c +++ b/src/mzscheme/gc2/newgc.c @@ -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); diff --git a/src/mzscheme/src/error.c b/src/mzscheme/src/error.c index 0ba8526b9a..dd0e2ea92f 100644 --- a/src/mzscheme/src/error.c +++ b/src/mzscheme/src/error.c @@ -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); } diff --git a/src/mzscheme/src/future.c b/src/mzscheme/src/future.c index bbd7887991..83db07dc8c 100644 --- a/src/mzscheme/src/future.c +++ b/src/mzscheme/src/future.c @@ -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); } diff --git a/src/mzscheme/src/future.h b/src/mzscheme/src/future.h index 0d51b00c69..638a158eae 100644 --- a/src/mzscheme/src/future.h +++ b/src/mzscheme/src/future.h @@ -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;