diff options
author | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2000-05-19 14:03:44 +0000 |
---|---|---|
committer | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2000-05-19 14:03:44 +0000 |
commit | 1a548472dd89674ea96590334d866f6bea6e0bcc (patch) | |
tree | 09af7197b8478a4e5e80b21b6de7909977d93e8f /libguile/throw.c | |
parent | bcee10ddd203bf8cf1dd0e899a4a04334c1a0bed (diff) | |
download | guile-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.c | 27 |
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); |