diff options
| author | Tom Tromey | 2013-06-13 11:29:06 -0600 |
|---|---|---|
| committer | Tom Tromey | 2013-06-13 11:29:06 -0600 |
| commit | 5ccb7e7b1ea2ca7f6e45d00d839e19f22cc961da (patch) | |
| tree | af9b79246f0b18d748c3e1c33b1bb1b33cf1fbe0 /src/eval.c | |
| parent | 313dfb6277b3e1ef28c7bb76e776f10168e3f0a3 (diff) | |
| parent | 94fa6ec7b306b47c251f7b8b67662598027a7ff3 (diff) | |
| download | emacs-5ccb7e7b1ea2ca7f6e45d00d839e19f22cc961da.tar.gz emacs-5ccb7e7b1ea2ca7f6e45d00d839e19f22cc961da.zip | |
merge from trunk
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/eval.c b/src/eval.c index 7520164108f..3f7be81a7e4 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -117,21 +117,29 @@ static Lisp_Object apply_lambda (Lisp_Object fun, Lisp_Object args); | |||
| 117 | 117 | ||
| 118 | /* Functions to modify slots of backtrace records. */ | 118 | /* Functions to modify slots of backtrace records. */ |
| 119 | 119 | ||
| 120 | static void set_backtrace_args (struct specbinding *pdl, Lisp_Object *args) | 120 | static void |
| 121 | set_backtrace_args (struct specbinding *pdl, Lisp_Object *args) | ||
| 121 | { eassert (pdl->kind == SPECPDL_BACKTRACE); pdl->v.bt.args = args; } | 122 | { eassert (pdl->kind == SPECPDL_BACKTRACE); pdl->v.bt.args = args; } |
| 122 | 123 | ||
| 123 | static void set_backtrace_nargs (struct specbinding *pdl, ptrdiff_t n) | 124 | static void |
| 125 | set_backtrace_nargs (struct specbinding *pdl, ptrdiff_t n) | ||
| 124 | { eassert (pdl->kind == SPECPDL_BACKTRACE); pdl->v.bt.nargs = n; } | 126 | { eassert (pdl->kind == SPECPDL_BACKTRACE); pdl->v.bt.nargs = n; } |
| 125 | 127 | ||
| 126 | void set_backtrace_debug_on_exit (struct specbinding *pdl, bool doe) | 128 | static void |
| 129 | set_backtrace_debug_on_exit (struct specbinding *pdl, bool doe) | ||
| 127 | { eassert (pdl->kind == SPECPDL_BACKTRACE); pdl->v.bt.debug_on_exit = doe; } | 130 | { eassert (pdl->kind == SPECPDL_BACKTRACE); pdl->v.bt.debug_on_exit = doe; } |
| 128 | 131 | ||
| 129 | /* Helper functions to scan the backtrace. */ | 132 | /* Helper functions to scan the backtrace. */ |
| 130 | 133 | ||
| 131 | EXTERN_INLINE bool backtrace_p (struct specbinding *pdl) | 134 | bool backtrace_p (struct specbinding *) EXTERNALLY_VISIBLE; |
| 135 | struct specbinding *backtrace_top (void) EXTERNALLY_VISIBLE; | ||
| 136 | struct specbinding *backtrace_next (struct specbinding *pdl) EXTERNALLY_VISIBLE; | ||
| 137 | |||
| 138 | bool backtrace_p (struct specbinding *pdl) | ||
| 132 | { return pdl >= specpdl; } | 139 | { return pdl >= specpdl; } |
| 133 | 140 | ||
| 134 | EXTERN_INLINE struct specbinding *backtrace_top (void) | 141 | struct specbinding * |
| 142 | backtrace_top (void) | ||
| 135 | { | 143 | { |
| 136 | struct specbinding *pdl = specpdl_ptr - 1; | 144 | struct specbinding *pdl = specpdl_ptr - 1; |
| 137 | while (backtrace_p (pdl) && pdl->kind != SPECPDL_BACKTRACE) | 145 | while (backtrace_p (pdl) && pdl->kind != SPECPDL_BACKTRACE) |
| @@ -139,7 +147,8 @@ EXTERN_INLINE struct specbinding *backtrace_top (void) | |||
| 139 | return pdl; | 147 | return pdl; |
| 140 | } | 148 | } |
| 141 | 149 | ||
| 142 | EXTERN_INLINE struct specbinding *backtrace_next (struct specbinding *pdl) | 150 | struct specbinding * |
| 151 | backtrace_next (struct specbinding *pdl) | ||
| 143 | { | 152 | { |
| 144 | pdl--; | 153 | pdl--; |
| 145 | while (backtrace_p (pdl) && pdl->kind != SPECPDL_BACKTRACE) | 154 | while (backtrace_p (pdl) && pdl->kind != SPECPDL_BACKTRACE) |
| @@ -1938,7 +1947,7 @@ grow_specpdl (void) | |||
| 1938 | specpdl_ptr = specpdl + count; | 1947 | specpdl_ptr = specpdl + count; |
| 1939 | } | 1948 | } |
| 1940 | 1949 | ||
| 1941 | LISP_INLINE void | 1950 | void |
| 1942 | record_in_backtrace (Lisp_Object function, Lisp_Object *args, ptrdiff_t nargs) | 1951 | record_in_backtrace (Lisp_Object function, Lisp_Object *args, ptrdiff_t nargs) |
| 1943 | { | 1952 | { |
| 1944 | eassert (nargs >= UNEVALLED); | 1953 | eassert (nargs >= UNEVALLED); |