summaryrefslogtreecommitdiff
path: root/libguile/throw.c
diff options
context:
space:
mode:
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2000-09-19 10:56:57 +0000
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2000-09-19 10:56:57 +0000
commit5a2a5407e8457b1355f54b0ee0c315b01dbc790b (patch)
tree7c037b6a41c1c411326c791225f09789855bc83a /libguile/throw.c
parente621f2b022ca9ab8f0190d67847b828f588dce37 (diff)
downloadguile-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.c18
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);