X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FRtsFlags.c;h=4f69f49fecc58ca81518ebd65ea8e915dc3331fa;hb=5244f537d12bdb5e016ce7b04e9181b364e5cb27;hp=69064ea743a7b99f57fa24e8ec6147e891b23a81;hpb=d5bd3e829c47c03157cf41cad581d2df44dfd81b;p=ghc-hetmet.git diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c index 69064ea..4f69f49 100644 --- a/rts/RtsFlags.c +++ b/rts/RtsFlags.c @@ -317,10 +317,12 @@ void initRtsFlagsDefaults(void) RtsFlags.TraceFlags.timestamp = rtsFalse; RtsFlags.TraceFlags.sched = rtsFalse; + RtsFlags.TraceFlags.gc = rtsFalse; #ifdef USE_PAPI /* By default no special measurements taken */ RtsFlags.PapiFlags.eventType = 0; + RtsFlags.PapiFlags.numUserEvents = 0; #endif } @@ -721,6 +723,14 @@ error = rtsTrue; case 'e': RtsFlags.PapiFlags.eventType = PAPI_FLAG_CB_EVENTS; break; + case '+': + if (RtsFlags.PapiFlags.numUserEvents >= MAX_PAPI_USER_EVENTS) { + errorBelch("maximum number of PAPI events reached"); + stg_exit(EXIT_FAILURE); + } + RtsFlags.PapiFlags.eventType = PAPI_USER_EVENTS; + RtsFlags.PapiFlags.userEvents[RtsFlags.PapiFlags.numUserEvents++] = rts_argv[arg] + 3; + break; default: bad_option( rts_argv[arg] ); } @@ -861,10 +871,6 @@ error = rtsTrue; case 'H': RtsFlags.GcFlags.heapSizeSuggestion = decode(rts_argv[arg]+2) / BLOCK_SIZE; - - if (RtsFlags.GcFlags.heapSizeSuggestion <= 0) { - bad_option(rts_argv[arg]); - } break; #ifdef RTS_GTK_FRONTPANEL @@ -1216,6 +1222,9 @@ error = rtsTrue; case 's': RtsFlags.TraceFlags.sched = rtsTrue; break; + case 'g': + RtsFlags.TraceFlags.gc = rtsTrue; + break; default: errorBelch("unknown RTS option: %s",rts_argv[arg]); error = rtsTrue;