Commit 06ace75d by Ian Lance Taylor

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
parent 7af1c0ad
3c1258156a2ae483c5cc523cb7a3c3374cbe7c2c d5bfa6cebb19a154cbfbc53f6e647d2ca7adef68
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -793,3 +793,10 @@ type g_ucontext_t [(_sizeof_ucontext_t + 15) / unsafe.Sizeof(uintptr(0))]uintptr ...@@ -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 is the Go version of the C type sigset_t.
// _sigset_t is defined by the Makefile from <signal.h>. // _sigset_t is defined by the Makefile from <signal.h>.
type sigset _sigset_t 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
}
...@@ -406,6 +406,8 @@ extern void globrunqput(G*) ...@@ -406,6 +406,8 @@ extern void globrunqput(G*)
__asm__(GOSYM_PREFIX "runtime.globrunqput"); __asm__(GOSYM_PREFIX "runtime.globrunqput");
extern P* pidleget(void) extern P* pidleget(void)
__asm__(GOSYM_PREFIX "runtime.pidleget"); __asm__(GOSYM_PREFIX "runtime.pidleget");
extern struct mstats* getMemstats(void)
__asm__(GOSYM_PREFIX "runtime.getMemstats");
bool runtime_isstarted; bool runtime_isstarted;
...@@ -726,7 +728,7 @@ runtime_malg(bool allocatestack, bool signalstack, byte** ret_stack, uintptr* re ...@@ -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 // 32-bit mode, the Go allocation space is all of
// memory anyhow. // memory anyhow.
if(sizeof(void*) == 8) { if(sizeof(void*) == 8) {
void *p = runtime_sysAlloc(stacksize, &mstats()->other_sys); void *p = runtime_sysAlloc(stacksize, &getMemstats()->stacks_sys);
if(p == nil) if(p == nil)
runtime_throw("runtime: cannot allocate memory for goroutine stack"); runtime_throw("runtime: cannot allocate memory for goroutine stack");
*ret_stack = (byte*)p; *ret_stack = (byte*)p;
......
...@@ -80,7 +80,6 @@ static void doscanstack1(G *gp, void *gcw) { ...@@ -80,7 +80,6 @@ static void doscanstack1(G *gp, void *gcw) {
scanstackblock(sp, (uintptr)(spsize), gcw); scanstackblock(sp, (uintptr)(spsize), gcw);
} }
#else #else
M *mp;
byte* bottom; byte* bottom;
byte* top; byte* top;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment