diff options
author | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-02-06 05:03:22 +0000 |
---|---|---|
committer | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-02-06 05:03:22 +0000 |
commit | 2d43d969c0da8109725b2b661740c7fe7c510a9f (patch) | |
tree | fb946aefe6bb8d802e6fb91e82ee3439ce470d9f /libgo | |
parent | b9b4ffeeb977d892bf209def147c23b3eaf4cad2 (diff) | |
download | gcc-2d43d969c0da8109725b2b661740c7fe7c510a9f.tar.gz |
runtime: Add memprofilerate to GODEBUG
Add memprofilerate as a value recognized
in the GODEBUG env var. The value provided
is used as the new setting for
runtime.MemProfileRate, allowing the user
to adjust memory profiling.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@220470 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgo')
-rw-r--r-- | libgo/go/runtime/extern.go | 4 | ||||
-rw-r--r-- | libgo/runtime/runtime.c | 16 |
2 files changed, 19 insertions, 1 deletions
diff --git a/libgo/go/runtime/extern.go b/libgo/go/runtime/extern.go index 393984c7d57..3c3e427a05a 100644 --- a/libgo/go/runtime/extern.go +++ b/libgo/go/runtime/extern.go @@ -39,6 +39,10 @@ a comma-separated list of name=val pairs. Supported names are: gcdead: setting gcdead=1 causes the garbage collector to clobber all stack slots that it thinks are dead. + memprofilerate: setting memprofilerate=X changes the setting for + runtime.MemProfileRate. Refer to the description of this variable for how + it is used and its default value. + scheddetail: setting schedtrace=X and scheddetail=1 causes the scheduler to emit detailed multiline info every X milliseconds, describing state of the scheduler, processors, threads and goroutines. diff --git a/libgo/runtime/runtime.c b/libgo/runtime/runtime.c index 6e0d164707d..e3320356c47 100644 --- a/libgo/runtime/runtime.c +++ b/libgo/runtime/runtime.c @@ -22,6 +22,10 @@ enum { // gotraceback value. static uint32 traceback_cache = ~(uint32)0; +extern volatile intgo runtime_MemProfileRate + __asm__ (GOSYM_PREFIX "runtime.MemProfileRate"); + + // The GOTRACEBACK environment variable controls the // behavior of a Go program that is crashing and exiting. // GOTRACEBACK=0 suppress all tracebacks @@ -315,6 +319,11 @@ runtime_signalstack(byte *p, int32 n) DebugVars runtime_debug; +// Holds variables parsed from GODEBUG env var, +// except for "memprofilerate" since there is an +// existing var for that value which is int +// instead of in32 and might have an +// initial value. static struct { const char* name; int32* value; @@ -349,7 +358,12 @@ runtime_parsedebugvars(void) for(;;) { for(i=0; i<(intgo)nelem(dbgvar); i++) { n = runtime_findnull((const byte*)dbgvar[i].name); - if(runtime_mcmp(p, dbgvar[i].name, n) == 0 && p[n] == '=') + if(runtime_mcmp(p, "memprofilerate", n) == 0 && p[n] == '=') + // Set the MemProfileRate directly since it + // is an int, not int32, and should only lbe + // set here if specified by GODEBUG + runtime_MemProfileRate = runtime_atoi(p+n+1); + else if(runtime_mcmp(p, dbgvar[i].name, n) == 0 && p[n] == '=') *dbgvar[i].value = runtime_atoi(p+n+1); } p = (const byte *)runtime_strstr((const char *)p, ","); |