summaryrefslogtreecommitdiff
path: root/libguile/throw.c
diff options
context:
space:
mode:
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2000-05-19 14:03:44 +0000
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2000-05-19 14:03:44 +0000
commit1a548472dd89674ea96590334d866f6bea6e0bcc (patch)
tree09af7197b8478a4e5e80b21b6de7909977d93e8f /libguile/throw.c
parentbcee10ddd203bf8cf1dd0e899a4a04334c1a0bed (diff)
downloadguile-1a548472dd89674ea96590334d866f6bea6e0bcc.tar.gz
* gc.c (scm_cellp): Fixed and simplified.
* Using double cells to represent jump buffers with debug extensions.
Diffstat (limited to 'libguile/throw.c')
-rw-r--r--libguile/throw.c27
1 files changed, 4 insertions, 23 deletions
diff --git a/libguile/throw.c b/libguile/throw.c
index c63007547..78be35a4e 100644
--- a/libguile/throw.c
+++ b/libguile/throw.c
@@ -74,21 +74,11 @@ static int scm_tc16_jmpbuffer;
#define ACTIVATEJB(OBJ) (SCM_SETOR_CAR (OBJ, (1L << 16L)))
#define DEACTIVATEJB(OBJ) (SCM_SETAND_CAR (OBJ, ~(1L << 16L)))
-#ifndef DEBUG_EXTENSIONS
#define JBJMPBUF(OBJ) ((jmp_buf *) SCM_CELL_WORD_1 (OBJ))
#define SETJBJMPBUF(x,v) (SCM_SET_CELL_WORD_1 ((x), (v)))
-#else
-#define SCM_JBDFRAME(x) ((scm_debug_frame *) SCM_CELL_WORD_0 (SCM_CDR (x)))
-#define JBJMPBUF(OBJ) ((jmp_buf *) SCM_CELL_WORD_1 (SCM_CDR (OBJ)))
-#define SCM_SETJBDFRAME(OBJ,X) (SCM_SET_CELL_WORD_0 (SCM_CDR (OBJ), (X)))
-#define SETJBJMPBUF(OBJ,X) (SCM_SET_CELL_WORD_1 (SCM_CDR (OBJ), (X)))
-
-static scm_sizet
-freejb (SCM jbsmob)
-{
- scm_must_free ((char *) SCM_CELL_WORD_1 (jbsmob));
- return sizeof (scm_cell);
-}
+#ifdef DEBUG_EXTENSIONS
+#define SCM_JBDFRAME(x) ((scm_debug_frame *) SCM_CELL_WORD_2 (x))
+#define SCM_SETJBDFRAME(x,v) (SCM_SET_CELL_WORD_2 ((x), (v)))
#endif
static int
@@ -110,10 +100,7 @@ make_jmpbuf (void)
SCM_REDEFER_INTS;
{
#ifdef DEBUG_EXTENSIONS
- char *mem = scm_must_malloc (sizeof (scm_cell), "jb");
-#endif
-#ifdef DEBUG_EXTENSIONS
- SCM_NEWSMOB (answer, scm_tc16_jmpbuffer, mem);
+ SCM_NEWSMOB2 (answer, scm_tc16_jmpbuffer, 0, 0);
#else
SCM_NEWSMOB (answer, scm_tc16_jmpbuffer, 0);
#endif
@@ -715,15 +702,9 @@ void
scm_init_throw ()
{
scm_tc16_jmpbuffer = scm_make_smob_type_mfpe ("jmpbuffer",
-#ifdef DEBUG_EXTENSIONS
- sizeof (scm_cell),
- NULL, /* mark */
- freejb,
-#else
0,
NULL, /* mark */
NULL,
-#endif
printjb,
NULL);