aboutsummaryrefslogtreecommitdiff
path: root/model.h
diff options
context:
space:
mode:
Diffstat (limited to 'model.h')
-rw-r--r--model.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/model.h b/model.h
index 8d272f8..964d68b 100644
--- a/model.h
+++ b/model.h
@@ -21,16 +21,25 @@ const int CLS_CONTAINER = 1 << 20;
#define TO_PAIR(ptr) \
(static_cast<Pair*>(ptr))
-#define EXIT_CURRENT_CONT(lenvt, cont) \
+#define EXIT_CURRENT_ENVT(lenvt) \
do { \
gc.expose(lenvt); \
lenvt = cont->envt; \
gc.attach(lenvt); \
+ } while (0)
+#define EXIT_CURRENT_CONT(cont) \
+ do { \
gc.expose(cont); \
cont = cont->prev_cont; \
gc.attach(cont); \
} while (0)
+#define EXIT_CURRENT_EXEC(lenvt, cont) \
+ do { \
+ EXIT_CURRENT_ENVT(lenvt); \
+ EXIT_CURRENT_CONT(cont); \
+ } while (0)
+
/** @class FrameObj
* Objects that can be held in the evaluation stack
*/