* darwin_stop_world.c [!DARWIN_DONT_PARSE_STACK] (GC_FindTopOfStack):
Initialize frame local variable first (to stack_start).
* darwin_stop_world.c [!DARWIN_DONT_PARSE_STACK && !POWERPC]
(GC_FindTopOfStack): Call ABORT with the appropriate message (instead
of GC_ASSERT) if stack_start iz zero.
GC_INNER ptr_t GC_FindTopOfStack(unsigned long stack_start)
{
- StackFrame *frame;
+ StackFrame *frame = (StackFrame *)stack_start;
-# ifdef POWERPC
- if (stack_start == 0) {
+ if (stack_start == 0) {
+# ifdef POWERPC
# if CPP_WORDSZ == 32
__asm__ __volatile__ ("lwz %0,0(r1)" : "=r" (frame));
# else
__asm__ __volatile__ ("ld %0,0(r1)" : "=r" (frame));
# endif
- } else
-# else
- GC_ASSERT(stack_start != 0); /* not implemented */
-# endif /* !POWERPC */
- /* else */ {
- frame = (StackFrame *)stack_start;
+# else
+ ABORT("GC_FindTopOfStack(0) is not implemented");
+# endif
}
# ifdef DEBUG_THREADS_EXTRA