summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2022-01-04 11:51:00 +0900
committerGitHub <[email protected]>2022-01-04 11:51:00 +0900
commit6c68b516ffc95b26a5167f7d2ff57b8ec4a37542 (patch)
tree71f33e6094fe949bf2b192b652309fe7b7af17d7
parent5c75dc9edcc7b744226f3eddd2922b2d55c10187 (diff)
parent82a1b00eb6d99bca1f4bc021a4c97ed7ccea16c8 (diff)
downloadmruby-6c68b516ffc95b26a5167f7d2ff57b8ec4a37542.tar.gz
mruby-6c68b516ffc95b26a5167f7d2ff57b8ec4a37542.zip
Merge pull request #5624 from dearblue/powerof2
Assert that `MRB_METHOD_CACHE_SIZE` is a power of 2
-rw-r--r--include/mruby.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/mruby.h b/include/mruby.h
index 806ceaff6..3e92021ac 100644
--- a/include/mruby.h
+++ b/include/mruby.h
@@ -109,6 +109,8 @@
mrb_static_assert_expand(mrb_static_assert_selector(__VA_ARGS__, mrb_static_assert2, mrb_static_assert1, _)(__VA_ARGS__))
#endif
+#define mrb_static_assert_powerof2(num) mrb_static_assert((num) > 0 && (num) == ((num) & -(num)), "need power of 2 for " #num)
+
#include "mrbconf.h"
#include <mruby/common.h>
@@ -208,6 +210,7 @@ struct mrb_context {
#ifdef MRB_METHOD_CACHE_SIZE
# undef MRB_NO_METHOD_CACHE
+mrb_static_assert_powerof2(MRB_METHOD_CACHE_SIZE);
#else
/* default method cache size: 256 */
/* cache size needs to be power of 2 */