|
|
static void | static void |
mark_stack () | mark_stack () |
{ | { |
jmp_buf j; |
union aligned_jmpbuf { |
|
Lisp_Object o; |
|
jmp_buf j; |
|
} j; |
volatile int stack_grows_down_p = (char *) &j > (char *) stack_base; | volatile int stack_grows_down_p = (char *) &j > (char *) stack_base; |
void *end; | void *end; |
| |
|
|
} | } |
#endif /* GC_SETJMP_WORKS */ | #endif /* GC_SETJMP_WORKS */ |
| |
setjmp (j); |
setjmp (j.j); |
end = stack_grows_down_p ? (char *) &j + sizeof j : (char *) &j; | end = stack_grows_down_p ? (char *) &j + sizeof j : (char *) &j; |
#endif /* not GC_SAVE_REGISTERS_ON_STACK */ | #endif /* not GC_SAVE_REGISTERS_ON_STACK */ |
| |