summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--eval_intern.h6
-rw-r--r--load.c2
-rw-r--r--vm_method.c28
4 files changed, 35 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index dc1a30b9fb..17f9cd43db 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Mon Jun 1 05:42:00 2015 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h, vm_method.c: move macros to functions.
+ * SCOPE_TEST(f) -> rb_frame_visibility_test(flag).
+ * SCOPE_CHECK(f) -> rb_frame_visibility_check(flag).
+ * SCOPE_SET(f) -> rb_frame_visibility_set(flag).
+
+ * load.c (load_ext): use it.
+
Mon Jun 1 04:47:37 2015 Zachary Scott <e@zzak.io>
* ext/date/date_core.c: [DOC] Add comparison of Time and DateTime
diff --git a/eval_intern.h b/eval_intern.h
index 0a6e092ece..0c04a1c6c3 100644
--- a/eval_intern.h
+++ b/eval_intern.h
@@ -199,10 +199,6 @@ enum ruby_tag_type {
#define TAG_FATAL RUBY_TAG_FATAL
#define TAG_MASK RUBY_TAG_MASK
-#define SCOPE_TEST(f) (CREF_VISI(rb_vm_cref()) & (f))
-#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)
@@ -286,6 +282,8 @@ CREF_OMOD_SHARED_UNSET(rb_cref_t *cref)
cref->flags &= ~NODE_FL_CREF_OMOD_SHARED_;
}
+void rb_frame_visibility_set(rb_method_flag_t);
+
void rb_thread_cleanup(void);
void rb_thread_wait_other_threads(void);
diff --git a/load.c b/load.c
index f4f7808d28..702cc7b27d 100644
--- a/load.c
+++ b/load.c
@@ -935,7 +935,7 @@ load_failed(VALUE fname)
static VALUE
load_ext(VALUE path)
{
- SCOPE_SET(NOEX_PUBLIC);
+ rb_frame_visibility_set(NOEX_PUBLIC);
return (VALUE)dln_load(RSTRING_PTR(path));
}
diff --git a/vm_method.c b/vm_method.c
index 7cdb7836c0..2e8c5d721b 100644
--- a/vm_method.c
+++ b/vm_method.c
@@ -908,6 +908,24 @@ rb_method_boundp(VALUE klass, ID id, int ex)
extern ID rb_check_attr_id(ID id);
+static int
+rb_frame_visibility_test(rb_method_flag_t flag)
+{
+ return CREF_VISI(rb_vm_cref()) & flag;
+}
+
+static int
+rb_frame_visibility_check(rb_method_flag_t flag)
+{
+ return CREF_VISI(rb_vm_cref()) == flag;
+}
+
+void
+rb_frame_visibility_set(rb_method_flag_t flag)
+{
+ CREF_VISI_SET(rb_vm_cref(), flag);
+}
+
void
rb_attr(VALUE klass, ID id, int read, int write, int ex)
{
@@ -919,13 +937,13 @@ rb_attr(VALUE klass, ID id, int read, int write, int ex)
noex = NOEX_PUBLIC;
}
else {
- if (SCOPE_TEST(NOEX_PRIVATE)) {
+ if (rb_frame_visibility_test(NOEX_PRIVATE)) {
noex = NOEX_PRIVATE;
- if (SCOPE_CHECK(NOEX_MODFUNC)) {
+ if (rb_frame_visibility_check(NOEX_MODFUNC)) {
rb_warning("attribute accessor as module_function");
}
}
- else if (SCOPE_TEST(NOEX_PROTECTED)) {
+ else if (rb_frame_visibility_test(NOEX_PROTECTED)) {
noex = NOEX_PROTECTED;
}
else {
@@ -1437,7 +1455,7 @@ static VALUE
set_visibility(int argc, const VALUE *argv, VALUE module, rb_method_flag_t ex)
{
if (argc == 0) {
- SCOPE_SET(ex);
+ rb_frame_visibility_set(ex);
}
else {
set_method_visibility(module, argc, argv, ex);
@@ -1638,7 +1656,7 @@ rb_mod_modfunc(int argc, VALUE *argv, VALUE module)
}
if (argc == 0) {
- SCOPE_SET(NOEX_MODFUNC);
+ rb_frame_visibility_set(NOEX_MODFUNC);
return module;
}