From 6439f7121b3a75d48d0db2e75c663de754a84c9c Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 25 Aug 2014 21:24:16 -0700 Subject: * gc.c (top): Renamed to gc_prot_top, turned extern. (prot1, rel1, mark): Follow rename. * gc.h (gc_prot_top): Declared. * signal.h (extended_jmp_buf): New member, gc_pt. (extended_setjmp): Save and restore gc_prot_top. --- signal.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'signal.h') diff --git a/signal.h b/signal.h index 4fe9d823..0bbff153 100644 --- a/signal.h +++ b/signal.h @@ -63,6 +63,7 @@ typedef struct { sigset_t blocked; val de; int gc; + val **gc_pt; int rv; } extended_jmp_buf; @@ -70,13 +71,16 @@ typedef struct { (setjmp((EJB).jb) \ ? (async_sig_enabled = (EJB).se, \ dyn_env = (EJB).de, \ - gc_enabled = ((EJB).gc), \ + gc_enabled = (EJB).gc, \ + gc_prot_top = (EJB).gc_pt, \ sig_mask(SIG_SETMASK, &(EJB).blocked, 0), \ (EJB).rv) \ : ((EJB).se = async_sig_enabled, \ (EJB).de = dyn_env, \ (EJB).gc = gc_enabled, \ - (EJB).blocked = sig_blocked_cache, 0)) + (EJB).gc_pt = gc_prot_top, \ + (EJB).blocked = sig_blocked_cache, \ + 0)) #define extended_longjmp(EJB, ARG) \ ((EJB).rv = (ARG), longjmp((EJB).jb, 1)) @@ -96,6 +100,7 @@ typedef struct { jmp_buf jb; val de; int gc; + val **gc_pt; int rv; } extended_jmp_buf; @@ -103,9 +108,11 @@ typedef struct { (setjmp((EJB).jb) \ ? (dyn_env = (EJB).de, \ gc_enabled = ((EJB).gc), \ + gc_prot_top = (EJB).gc_pt, \ (EJB).rv) \ : ((EJB).de = dyn_env, \ (EJB).gc = gc_enabled, \ + (EJB).gc_pt = gc_prot_top, \ 0)) #define extended_longjmp(EJB, ARG) \ -- cgit v1.2.3