summaryrefslogtreecommitdiff
path: root/eval_intern.h
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-03-11 12:55:32 (GMT)
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-03-11 12:55:32 (GMT)
commit48cb7391190612c77375f924c1e202178f09f559 (patch)
tree98eab29a663ead2481494fe99cc5b67d13e51d1e /eval_intern.h
parentce179b3d04e0875d7cb332f5b57c9df89bb4de07 (diff)
* internal.h, eval_intern.h: move CREF accessors.
List IMEMO supported types in internal.h. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval_intern.h')
-rw-r--r--eval_intern.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/eval_intern.h b/eval_intern.h
index d41368e..0a6e092 100644
--- a/eval_intern.h
+++ b/eval_intern.h
@@ -203,6 +203,89 @@ enum ruby_tag_type {
#define SCOPE_CHECK(f) (CREF_VISI(rb_vm_cref()) == (f))
#define SCOPE_SET(f) (CREF_VISI_SET(rb_vm_cref(), (f)))
+/* CREF operators */
+
+#define NODE_FL_CREF_PUSHED_BY_EVAL_ (((VALUE)1)<<15)
+#define NODE_FL_CREF_OMOD_SHARED_ (((VALUE)1)<<16)
+
+static inline VALUE
+CREF_CLASS(const rb_cref_t *cref)
+{
+ return cref->klass;
+}
+
+static inline void
+CREF_CLASS_SET(rb_cref_t *cref, VALUE klass)
+{
+ RB_OBJ_WRITE(cref, &cref->klass, klass);
+}
+
+static inline rb_cref_t *
+CREF_NEXT(const rb_cref_t *cref)
+{
+ return cref->next;
+}
+
+static inline void
+CREF_NEXT_SET(rb_cref_t *cref, const rb_cref_t *next_cref)
+{
+ RB_OBJ_WRITE(cref, &cref->next, next_cref);
+}
+
+static inline long
+CREF_VISI(const rb_cref_t *cref)
+{
+ return (long)cref->visi;
+}
+
+static inline void
+CREF_VISI_SET(rb_cref_t *cref, long v)
+{
+ cref->visi = v;
+}
+
+static inline VALUE
+CREF_REFINEMENTS(const rb_cref_t *cref)
+{
+ return cref->refinements;
+}
+
+static inline void
+CREF_REFINEMENTS_SET(rb_cref_t *cref, VALUE refs)
+{
+ RB_OBJ_WRITE(cref, &cref->refinements, refs);
+}
+
+static inline int
+CREF_PUSHED_BY_EVAL(const rb_cref_t *cref)
+{
+ return cref->flags & NODE_FL_CREF_PUSHED_BY_EVAL_;
+}
+
+static inline void
+CREF_PUSHED_BY_EVAL_SET(rb_cref_t *cref)
+{
+ cref->flags |= NODE_FL_CREF_PUSHED_BY_EVAL_;
+}
+
+static inline int
+CREF_OMOD_SHARED(const rb_cref_t *cref)
+{
+ return cref->flags & NODE_FL_CREF_OMOD_SHARED_;
+}
+
+static inline void
+CREF_OMOD_SHARED_SET(rb_cref_t *cref)
+{
+ cref->flags |= NODE_FL_CREF_OMOD_SHARED_;
+}
+
+static inline void
+CREF_OMOD_SHARED_UNSET(rb_cref_t *cref)
+{
+ cref->flags &= ~NODE_FL_CREF_OMOD_SHARED_;
+}
+
void rb_thread_cleanup(void);
void rb_thread_wait_other_threads(void);