The difference between the old and the new (from earlier) code
is that we set stackguard = stack.lo + StackGuard, while the old
code set stackguard = stack.lo. That 512 bytes appears to be
the difference between the profileloop function running and not running.
We don't know how big the system stack is, but it is likely MUCH bigger than 4k.
Give Go/C 8k.
TBR=iant
CC=golang-codereviews
https://golang.org/cl/
140440044
#include "textflag.h"
+// NOTE: Windows externalthreadhandler expects memclr to preserve DX.
+
// void runtime·memclr(void*, uintptr)
TEXT runtime·memclr(SB), NOSPLIT, $0-8
MOVL ptr+0(FP), DI
#include "textflag.h"
+// NOTE: Windows externalthreadhandler expects memclr to preserve DX.
+
// void runtime·memclr(void*, uintptr)
TEXT runtime·memclr(SB), NOSPLIT, $0-16
MOVQ ptr+0(FP), DI
CALL runtime·memclr(SB) // smashes AX,BX,CX
LEAL g_end(SP), BX
MOVL BX, g_m(SP)
- LEAL -4096(SP), CX
+ LEAL -8192(SP), CX
MOVL CX, (g_stack+stack_lo)(SP)
ADDL $const_StackGuard, CX
MOVL CX, g_stackguard0(SP)