diff options
| author | dearblue <[email protected]> | 2022-01-02 14:59:55 +0900 |
|---|---|---|
| committer | dearblue <[email protected]> | 2022-01-02 14:59:55 +0900 |
| commit | 82a1b00eb6d99bca1f4bc021a4c97ed7ccea16c8 (patch) | |
| tree | dc0cba7bd4022098d4d1ce79f1d0a154a4d084b3 | |
| parent | 28ccc664e5dcd3f9d55173e9afde77c4705a9ab6 (diff) | |
| download | mruby-82a1b00eb6d99bca1f4bc021a4c97ed7ccea16c8.tar.gz mruby-82a1b00eb6d99bca1f4bc021a4c97ed7ccea16c8.zip | |
Assert that `MRB_METHOD_CACHE_SIZE` is a power of 2
The `mrb_static_assert_powerof2()` macro has been introduced for this purpose.
| -rw-r--r-- | include/mruby.h | 3 |
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 */ |
