X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=libgc%2Fmark_rts.c;h=561333ab04d672ca249142e11a2b77654adbee38;hb=HEAD;hp=55eb5d5433953dd860281be12e0d9c90205f9ec9;hpb=ff228e1c801bda9666b6edab3ee962e05edcf480;p=mono.git diff --git a/libgc/mark_rts.c b/libgc/mark_rts.c index 55eb5d54339..561333ab04d 100644 --- a/libgc/mark_rts.c +++ b/libgc/mark_rts.c @@ -368,8 +368,14 @@ ptr_t p; ptr_t GC_approx_sp() { - word dummy; - +#if defined(__GNUC__) + return __builtin_frame_address(0); +#else + VOLATILE word dummy; + + dummy = 42; /* Force stack to grow if necessary. Otherwise the */ + /* later accesses might cause the kernel to think we're */ + /* doing something wrong. */ # ifdef _MSC_VER # pragma warning(disable:4172) # endif @@ -377,6 +383,7 @@ ptr_t GC_approx_sp() # ifdef _MSC_VER # pragma warning(default:4172) # endif +#endif // __GNUC__ } /*