summaryrefslogtreecommitdiff
path: root/eval_intern.h
diff options
context:
space:
mode:
Diffstat (limited to 'eval_intern.h')
-rw-r--r--eval_intern.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/eval_intern.h b/eval_intern.h
index 8ee1625fc6..3f4c81bf48 100644
--- a/eval_intern.h
+++ b/eval_intern.h
@@ -162,10 +162,19 @@ char *strrchr _((const char *, const char));
#define TAG_RAISE 0x6
#define TAG_THROW 0x7
#define TAG_FATAL 0x8
-#define TAG_CONTCALL 0x9
-#define TAG_THREAD 0xa
#define TAG_MASK 0xf
+#define NEW_THROW_OBJECT(val, pt, st) \
+ ((VALUE)NEW_NODE(NODE_LIT, (val), (pt), (st)))
+#define SET_THROWOBJ_CATCH_POINT(obj, val) \
+ (RNODE((obj))->u2.value = (val))
+#define SET_THROWOBJ_STATE(obj, val) \
+ (RNODE((obj))->u3.value = (val))
+
+#define GET_THROWOBJ_VAL(obj) ((VALUE)RNODE((obj))->u1.value)
+#define GET_THROWOBJ_CATCH_POINT(obj) ((VALUE*)RNODE((obj))->u2.value)
+#define GET_THROWOBJ_STATE(obj) ((int)RNODE((obj))->u3.value)
+
#define SCOPE_TEST(f) \
(ruby_cref()->nd_visi & (f))