OSDN Git Service

runtime: For g0 set stack_size to 0 when not -fsplit-stack.
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 10 Feb 2012 15:55:37 +0000 (15:55 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 10 Feb 2012 15:55:37 +0000 (15:55 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184099 138bc75d-0d04-0410-961f-82ee72b054a4

libgo/runtime/proc.c

index 42a5779..94c2a51 100644 (file)
@@ -909,7 +909,9 @@ runtime_mstart(void* mp)
        __splitstack_getcontext(&g->stack_context[0]);
 #else
        g->gcinitial_sp = &mp;
-       g->gcstack_size = StackMin;
+       // Setting gcstack_size to 0 is a marker meaning that gcinitial_sp
+       // is the top of the stack, not the bottom.
+       g->gcstack_size = 0;
        g->gcnext_sp = &mp;
 #endif
        getcontext(&g->context);
@@ -1267,6 +1269,8 @@ __go_go(void (*fn)(void*), void* arg)
 #else
                sp = newg->gcinitial_sp;
                spsize = newg->gcstack_size;
+               if(spsize == 0)
+                       runtime_throw("bad spsize in __go_go");
                newg->gcnext_sp = sp;
 #endif
        } else {