diff options
author | Koichi Sasada <ko1@atdot.net> | 2020-05-20 11:38:44 +0900 |
---|---|---|
committer | Koichi Sasada <ko1@atdot.net> | 2020-05-26 03:21:14 +0900 |
commit | 21991e6ca59274e41a472b5256bd3245f6596c90 (patch) | |
tree | b4cf1b0f059dc2a5b49abd44f4487224d38d0cb7 /include/ruby/internal/core | |
parent | b10b37924aef33426ea6e2fda5ce17804796ecc4 (diff) |
Use RUBY_DEBUG instead of NDEBUG
Assertions in header files slows down an interpreter, so they should be
turned off by default (simple `make`). To enable them, define a macro
`RUBY_DEBUG=1` (e.g. `make cppflags=-DRUBY_DEBUG` or use `#define` at
the very beggining of the file. Note that even if `NDEBUG=1` is defined,
`RUBY_DEBUG=1` enables all assertions.
[Feature #16837]
related: https://github.com/ruby/ruby/pull/3120
`assert()` lines in MRI *.c is not disabled even if `RUBY_DEBUG=0` and
it can be disabled with `NDEBUG=1`. So please consider to use
`RUBY_ASSERT()` if you want to disable them when `RUBY_DEBUG=0`.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3124
Diffstat (limited to 'include/ruby/internal/core')
-rw-r--r-- | include/ruby/internal/core/rarray.h | 12 | ||||
-rw-r--r-- | include/ruby/internal/core/rbasic.h | 2 | ||||
-rw-r--r-- | include/ruby/internal/core/rmatch.h | 2 | ||||
-rw-r--r-- | include/ruby/internal/core/robject.h | 4 | ||||
-rw-r--r-- | include/ruby/internal/core/rregexp.h | 8 | ||||
-rw-r--r-- | include/ruby/internal/core/rstring.h | 6 | ||||
-rw-r--r-- | include/ruby/internal/core/rtypeddata.h | 8 |
7 files changed, 21 insertions, 21 deletions
diff --git a/include/ruby/internal/core/rarray.h b/include/ruby/internal/core/rarray.h index ea2abe6618..a21500e1d2 100644 --- a/include/ruby/internal/core/rarray.h +++ b/include/ruby/internal/core/rarray.h @@ -112,7 +112,7 @@ void rb_ary_detransient(VALUE a); #endif RBIMPL_SYMBOL_EXPORT_END() -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_ARTIFICIAL() static inline long RARRAY_EMBED_LEN(VALUE ary) @@ -126,7 +126,7 @@ RARRAY_EMBED_LEN(VALUE ary) return RBIMPL_CAST((long)f); } -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() static inline long rb_array_len(VALUE a) { @@ -147,7 +147,7 @@ RARRAY_LENINT(VALUE ary) return rb_long2int(RARRAY_LEN(ary)); } -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_ARTIFICIAL() static inline bool RARRAY_TRANSIENT_P(VALUE ary) @@ -161,7 +161,7 @@ RARRAY_TRANSIENT_P(VALUE ary) #endif } -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() /* internal function. do not use this function */ static inline const VALUE * rb_array_const_ptr_transient(VALUE a) @@ -177,7 +177,7 @@ rb_array_const_ptr_transient(VALUE a) } #if ! USE_TRANSIENT_HEAP -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() #endif /* internal function. do not use this function */ static inline const VALUE * @@ -258,7 +258,7 @@ RARRAY_ASET(VALUE ary, long i, VALUE v) /* RARRAY_AREF is used as a lvalue. Cannot be a function. */ #if 0 -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_ARTIFICIAL() static inline VALUE RARRAY_AREF(VALUE ary, long i) diff --git a/include/ruby/internal/core/rbasic.h b/include/ruby/internal/core/rbasic.h index 76333fd78e..2b578b663c 100644 --- a/include/ruby/internal/core/rbasic.h +++ b/include/ruby/internal/core/rbasic.h @@ -73,7 +73,7 @@ VALUE rb_obj_hide(VALUE obj); VALUE rb_obj_reveal(VALUE obj, VALUE klass); /* do not use this API to change klass information */ RBIMPL_SYMBOL_EXPORT_END() -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_ARTIFICIAL() static inline VALUE RBASIC_CLASS(VALUE obj) diff --git a/include/ruby/internal/core/rmatch.h b/include/ruby/internal/core/rmatch.h index 56b3765555..03ab5e5d82 100644 --- a/include/ruby/internal/core/rmatch.h +++ b/include/ruby/internal/core/rmatch.h @@ -59,7 +59,7 @@ struct RMatch { VALUE regexp; /* RRegexp */ }; -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_RETURNS_NONNULL() RBIMPL_ATTR_ARTIFICIAL() static inline struct re_registers * diff --git a/include/ruby/internal/core/robject.h b/include/ruby/internal/core/robject.h index 7fd2c6d025..60c31fda1a 100644 --- a/include/ruby/internal/core/robject.h +++ b/include/ruby/internal/core/robject.h @@ -57,7 +57,7 @@ struct RObject { } as; }; -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_ARTIFICIAL() static inline uint32_t ROBJECT_NUMIV(VALUE obj) @@ -72,7 +72,7 @@ ROBJECT_NUMIV(VALUE obj) } } -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_ARTIFICIAL() static inline VALUE * ROBJECT_IVPTR(VALUE obj) diff --git a/include/ruby/internal/core/rregexp.h b/include/ruby/internal/core/rregexp.h index c6ece314b4..f289ee1dda 100644 --- a/include/ruby/internal/core/rregexp.h +++ b/include/ruby/internal/core/rregexp.h @@ -46,7 +46,7 @@ struct RRegexp { unsigned long usecnt; }; -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_ARTIFICIAL() static inline VALUE RREGEXP_SRC(VALUE rexp) @@ -57,7 +57,7 @@ RREGEXP_SRC(VALUE rexp) return ret; } -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_ARTIFICIAL() static inline char * RREGEXP_SRC_PTR(VALUE rexp) @@ -65,7 +65,7 @@ RREGEXP_SRC_PTR(VALUE rexp) return RSTRING_PTR(RREGEXP_SRC(rexp)); } -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_ARTIFICIAL() static inline long RREGEXP_SRC_LEN(VALUE rexp) @@ -73,7 +73,7 @@ RREGEXP_SRC_LEN(VALUE rexp) return RSTRING_LEN(RREGEXP_SRC(rexp)); } -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_ARTIFICIAL() static inline char * RREGEXP_SRC_END(VALUE rexp) diff --git a/include/ruby/internal/core/rstring.h b/include/ruby/internal/core/rstring.h index be378cfa58..d073da1d2c 100644 --- a/include/ruby/internal/core/rstring.h +++ b/include/ruby/internal/core/rstring.h @@ -98,7 +98,7 @@ void rb_check_safe_str(VALUE); #define Check_SafeStr(v) rb_check_safe_str(RBIMPL_CAST((VALUE)(v))) RBIMPL_SYMBOL_EXPORT_END() -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_ARTIFICIAL() static inline long RSTRING_EMBED_LEN(VALUE str) @@ -117,7 +117,7 @@ RBIMPL_WARNING_PUSH() RBIMPL_WARNING_IGNORED(413) #endif -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_ARTIFICIAL() static inline struct RString rbimpl_rstring_getmem(VALUE str) @@ -138,7 +138,7 @@ rbimpl_rstring_getmem(VALUE str) RBIMPL_WARNING_POP() -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_ARTIFICIAL() static inline long RSTRING_LEN(VALUE str) diff --git a/include/ruby/internal/core/rtypeddata.h b/include/ruby/internal/core/rtypeddata.h index e5d365c4e9..3ffe07ec5e 100644 --- a/include/ruby/internal/core/rtypeddata.h +++ b/include/ruby/internal/core/rtypeddata.h @@ -136,12 +136,12 @@ rbimpl_rtypeddata_p(VALUE obj) return RTYPEDDATA(obj)->typed_flag == 1; } -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_ARTIFICIAL() static inline bool RTYPEDDATA_P(VALUE obj) { -#if ! RUBY_NDEBUG +#if RUBY_DEBUG if (RB_UNLIKELY(! RB_TYPE_P(obj, RUBY_T_DATA))) { Check_Type(obj, RUBY_T_DATA); RBIMPL_UNREACHABLE_RETURN(false); @@ -151,13 +151,13 @@ RTYPEDDATA_P(VALUE obj) return rbimpl_rtypeddata_p(obj); } -RBIMPL_ATTR_PURE_ON_NDEBUG() +RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_ARTIFICIAL() /* :TODO: can this function be __attribute__((returns_nonnull)) or not? */ static inline const struct rb_data_type_struct * RTYPEDDATA_TYPE(VALUE obj) { -#if ! RUBY_NDEBUG +#if RUBY_DEBUG if (RB_UNLIKELY(! RTYPEDDATA_P(obj))) { rb_unexpected_type(obj, RUBY_T_DATA); RBIMPL_UNREACHABLE_RETURN(NULL); |