runtime: fix build for non-split-stack systems

Change memory allocation accounting for stacks to use stacks_sys,
    since that seems to be what it is for.
    
    Reviewed-on: https://go-review.googlesource.com/43297

From-SVN: r247967
This commit is contained in:
Ian Lance Taylor 2017-05-12 12:49:34 +00:00
parent 7af1c0ad98
commit 06ace75d4b
4 changed files with 11 additions and 3 deletions

View File

@ -1,4 +1,4 @@
3c1258156a2ae483c5cc523cb7a3c3374cbe7c2c
d5bfa6cebb19a154cbfbc53f6e647d2ca7adef68
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.

View File

@ -793,3 +793,10 @@ type g_ucontext_t [(_sizeof_ucontext_t + 15) / unsafe.Sizeof(uintptr(0))]uintptr
// sigset is the Go version of the C type sigset_t.
// _sigset_t is defined by the Makefile from <signal.h>.
type sigset _sigset_t
// getMemstats returns a pointer to the internal memstats variable,
// for C code.
//go:linkname getMemstats runtime.getMemstats
func getMemstats() *mstats {
return &memstats
}

View File

@ -406,6 +406,8 @@ extern void globrunqput(G*)
__asm__(GOSYM_PREFIX "runtime.globrunqput");
extern P* pidleget(void)
__asm__(GOSYM_PREFIX "runtime.pidleget");
extern struct mstats* getMemstats(void)
__asm__(GOSYM_PREFIX "runtime.getMemstats");
bool runtime_isstarted;
@ -726,7 +728,7 @@ runtime_malg(bool allocatestack, bool signalstack, byte** ret_stack, uintptr* re
// 32-bit mode, the Go allocation space is all of
// memory anyhow.
if(sizeof(void*) == 8) {
void *p = runtime_sysAlloc(stacksize, &mstats()->other_sys);
void *p = runtime_sysAlloc(stacksize, &getMemstats()->stacks_sys);
if(p == nil)
runtime_throw("runtime: cannot allocate memory for goroutine stack");
*ret_stack = (byte*)p;

View File

@ -80,7 +80,6 @@ static void doscanstack1(G *gp, void *gcw) {
scanstackblock(sp, (uintptr)(spsize), gcw);
}
#else
M *mp;
byte* bottom;
byte* top;