From f92b553d1b0d10c0189095ab80830f91f2ac7856 Mon Sep 17 00:00:00 2001 From: "dbaron%dbaron.org" Date: Sun, 19 Mar 2006 01:27:17 +0000 Subject: [PATCH] Use __builtin_frame_address instead of setjmp to get the frame pointer. b=323853 r=brendan git-svn-id: svn://10.0.0.236/trunk@192599 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/gc/boehm/os_dep.c | 6 +----- mozilla/js/src/jsutil.c | 6 +----- mozilla/tools/trace-malloc/lib/nsTraceMalloc.c | 5 +---- 3 files changed, 3 insertions(+), 14 deletions(-) diff --git a/mozilla/gc/boehm/os_dep.c b/mozilla/gc/boehm/os_dep.c index 29eb5bf17e7..ce4780b2857 100644 --- a/mozilla/gc/boehm/os_dep.c +++ b/mozilla/gc/boehm/os_dep.c @@ -2429,8 +2429,6 @@ void GC_save_callers(struct callinfo info[NFRAMES]) #if defined(SAVE_CALL_CHAIN) && defined(LINUX) -#include - #include "call_tree.h" typedef struct stack_frame stack_frame; @@ -2443,10 +2441,8 @@ struct stack_frame { static stack_frame* getStackFrame() { - jmp_buf jb; stack_frame* currentFrame; - setjmp(jb); - currentFrame = (stack_frame*)(jb[0].__jmpbuf[JB_BP]); + currentFrame = (stack_frame*)__builtin_frame_address(0); currentFrame = currentFrame->next; return currentFrame; } diff --git a/mozilla/js/src/jsutil.c b/mozilla/js/src/jsutil.c index 9f052c7446e..02ba56a021d 100644 --- a/mozilla/js/src/jsutil.c +++ b/mozilla/js/src/jsutil.c @@ -66,7 +66,6 @@ JS_PUBLIC_API(void) JS_Assert(const char *s, const char *file, JSIntn ln) #define __USE_GNU 1 #include -#include #include #include "jshash.h" #include "jsprf.h" @@ -170,13 +169,10 @@ CallTree(uint32 *bp) JSCallsite * JS_Backtrace(int skip) { - jmp_buf jb; uint32 *bp, *bpdown; - setjmp(jb); - /* Stack walking code adapted from Kipp's "leaky". */ - bp = (uint32*) jb[0].__jmpbuf[JB_BP]; + bp = (uint32*) __builtin_frame_address(0); while (--skip >= 0) { bpdown = (uint32*) *bp++; if (bpdown < bp) diff --git a/mozilla/tools/trace-malloc/lib/nsTraceMalloc.c b/mozilla/tools/trace-malloc/lib/nsTraceMalloc.c index 2092ad03d31..283f5feaca9 100644 --- a/mozilla/tools/trace-malloc/lib/nsTraceMalloc.c +++ b/mozilla/tools/trace-malloc/lib/nsTraceMalloc.c @@ -51,7 +51,6 @@ #include #include #include -#include #ifdef XP_UNIX #include #include @@ -1339,7 +1338,6 @@ backtrace(int skip) callsite * backtrace(int skip) { - jmp_buf jb; uint32 *bp, *bpdown; callsite *site, **key; PLHashNumber hash; @@ -1348,10 +1346,9 @@ backtrace(int skip) tmstats.backtrace_calls++; suppress_tracing++; - setjmp(jb); /* Stack walking code adapted from Kipp's "leaky". */ - bp = (uint32*) jb[0].__jmpbuf[JB_BP]; + bp = (uint32*) __builtin_frame_address(0); while (--skip >= 0) { bpdown = (uint32*) *bp++; if (bpdown < bp)