diff --git a/src/class.c b/src/class.c index 2e39a560b..8bf0c45c8 100644 --- a/src/class.c +++ b/src/class.c @@ -26,16 +26,18 @@ union mt_ptr { mrb_func_t func; }; -#define MT_KEY_P(k) (((k)>>2) != 0) +#define MT_KEY_SHIFT 2 +#define MT_KEY_MASK ((1<<2)-1) +#define MT_KEY_P(k) (((k)>>MT_KEY_SHIFT) != 0) #define MT_FUNC_P 1 #define MT_NOARG_P 2 #define MT_EMPTY 0 #define MT_DELETED 1 -#define MT_KEY(sym, flags) ((sym)<<2|(flags)) +#define MT_KEY(sym, flags) ((sym)<>2) -#define MT_KEY_FLG(k) ((k)&3) +#define MT_KEY_SYM(k) ((k)>>MT_KEY_SHIFT) +#define MT_KEY_FLG(k) ((k)&MT_KEY_MASK) /* method table structure */ typedef struct mt_tbl {