diff options
author | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2000-09-19 10:56:57 +0000 |
---|---|---|
committer | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2000-09-19 10:56:57 +0000 |
commit | 5a2a5407e8457b1355f54b0ee0c315b01dbc790b (patch) | |
tree | 7c037b6a41c1c411326c791225f09789855bc83a /libguile/throw.c | |
parent | e621f2b022ca9ab8f0190d67847b828f588dce37 (diff) | |
download | guile-5a2a5407e8457b1355f54b0ee0c315b01dbc790b.tar.gz |
* Added a comment suggesting to rename scm_handle_by_message.
* When compiling on gcc, always avoid the GCSE bug.
* Removed some redundant tests.
Diffstat (limited to 'libguile/throw.c')
-rw-r--r-- | libguile/throw.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/libguile/throw.c b/libguile/throw.c index 421d3dd73..afa9ffaec 100644 --- a/libguile/throw.c +++ b/libguile/throw.c @@ -472,6 +472,10 @@ handler_message (void *handler_data, SCM tag, SCM args) message header to print; if zero, we use "guile" instead. That text is followed by a colon, then the message described by ARGS. */ +/* Dirk:FIXME:: The name of the function should make clear that the + * application gets terminated. + */ + SCM scm_handle_by_message (void *handler_data, SCM tag, SCM args) { @@ -605,11 +609,8 @@ scm_ithrow (SCM key, SCM args, int noreturn) /* Search the wind list for an appropriate catch. "Waiter, please bring us the wind list." */ - for (winds = scm_dynwinds; SCM_NIMP (winds); winds = SCM_CDR (winds)) + for (winds = scm_dynwinds; SCM_CONSP (winds); winds = SCM_CDR (winds)) { - if (! SCM_CONSP (winds)) - abort (); - dynpair = SCM_CAR (winds); if (SCM_CONSP (dynpair)) { @@ -620,28 +621,25 @@ scm_ithrow (SCM key, SCM args, int noreturn) } } -#ifdef BROKEN_GCSE #ifdef __GNUC__ + /* Dirk:FIXME:: This bugfix should be removed some time. */ /* GCC 2.95.2 has a bug in its optimizer that makes it generate incorrect code sometimes. This barrier stops it from being too clever. */ asm volatile ("" : "=g" (winds)); -#else -#error "GCSE bug found: reconfigure without optimization?" -#endif #endif /* If we didn't find anything, print a message and abort the process right here. If you don't want this, establish a catch-all around any code that might throw up. */ - if (SCM_NULLP (winds) || SCM_FALSEP (dynpair)) + if (SCM_NULLP (winds)) { scm_handle_by_message (NULL, key, args); abort (); } /* If the wind list is malformed, bail. */ - if (SCM_IMP (winds) || SCM_NCONSP (winds)) + if (!SCM_CONSP (winds)) abort (); jmpbuf = SCM_CDR (dynpair); |