summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2019-09-16 09:07:34 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2019-09-16 10:10:09 +0900
commit743d480fba801cdfdea61427017be781262dca54 (patch)
treea8c4fe3e46bff2c885a9ef7744d4c97269b9165f /include
parenta57b6f8ed06b96747d9521b3212a7959f7371a15 (diff)
downloadmruby-743d480fba801cdfdea61427017be781262dca54.tar.gz
mruby-743d480fba801cdfdea61427017be781262dca54.zip
Refactor `mrb_method_t`.
Diffstat (limited to 'include')
-rw-r--r--include/mruby.h2
-rw-r--r--include/mruby/proc.h7
2 files changed, 5 insertions, 4 deletions
diff --git a/include/mruby.h b/include/mruby.h
index 6fed041d6..2db11c52f 100644
--- a/include/mruby.h
+++ b/include/mruby.h
@@ -192,7 +192,7 @@ typedef mrb_value (*mrb_func_t)(struct mrb_state *mrb, mrb_value self);
typedef uintptr_t mrb_method_t;
#else
typedef struct {
- mrb_bool func_p;
+ uint8_t flags;
union {
struct RProc *proc;
mrb_func_t func;
diff --git a/include/mruby/proc.h b/include/mruby/proc.h
index f6e887163..9b2cbc6fc 100644
--- a/include/mruby/proc.h
+++ b/include/mruby/proc.h
@@ -110,10 +110,11 @@ MRB_API mrb_value mrb_proc_cfunc_env_get(mrb_state *mrb, mrb_int idx);
#else
-#define MRB_METHOD_FUNC_P(m) ((m).func_p)
+#define MRB_METHOD_FUNC_FL 1
+#define MRB_METHOD_FUNC_P(m) ((m).flags&MRB_METHOD_FUNC_FL)
#define MRB_METHOD_FUNC(m) ((m).func)
-#define MRB_METHOD_FROM_FUNC(m,fn) do{(m).func_p=TRUE;(m).func=(fn);}while(0)
-#define MRB_METHOD_FROM_PROC(m,pr) do{(m).func_p=FALSE;(m).proc=(pr);}while(0)
+#define MRB_METHOD_FROM_FUNC(m,fn) do{(m).flags=MRB_METHOD_FUNC_FL;(m).func=(fn);}while(0)
+#define MRB_METHOD_FROM_PROC(m,pr) do{(m).flags=0;(m).proc=(pr);}while(0)
#define MRB_METHOD_PROC_P(m) (!MRB_METHOD_FUNC_P(m))
#define MRB_METHOD_PROC(m) ((m).proc)
#define MRB_METHOD_UNDEF_P(m) ((m).proc==NULL)