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`.
This commit is contained in:
Koichi Sasada 2020-05-20 11:38:44 +09:00
Родитель b10b37924a
Коммит 21991e6ca5
19 изменённых файлов: 82 добавлений и 82 удалений

Просмотреть файл

@ -31,6 +31,10 @@
# define RUBY_DEBUG 0
#endif
#if RUBY_DEBUG > 0 && defined(NDEBUG)
#warning NDEBUG is ignored because RUBY_DEBUG>0.
#endif
/*
* Pro tip: `!!NDEBUG-1` expands to...
*
@ -82,11 +86,12 @@ RBIMPL_SYMBOL_EXPORT_END()
RUBY_ASSERT_MESG(!(cond) || (expr), mesg))
#endif /* RUBY_DEBUG */
#define RUBY_ASSERT(expr) RUBY_ASSERT_MESG_WHEN((!RUBY_NDEBUG+0), expr, #expr)
#define RUBY_ASSERT(expr) RUBY_ASSERT_MESG_WHEN(FALSE, expr, #expr)
#define RUBY_ASSERT_NDEBUG(expr) RUBY_ASSERT_MESG_WHEN(RUBY_NDEBUG, expr, #expr)
#define RUBY_ASSERT_WHEN(cond, expr) RUBY_ASSERT_MESG_WHEN(cond, expr, #expr)
#define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG_WHEN(TRUE, expr, #expr)
#define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG_WHEN(TRUE, expr, #expr)
#if ! RUBY_NDEBUG
#if RUBY_DEBUG
# define RBIMPL_ASSERT_OR_ASSUME(_) RUBY_ASSERT(_)
#elif defined(RBIMPL_HAVE___ASSUME)
# define RBIMPL_ASSERT_OR_ASSUME(_) RBIMPL_ASSUME(_)

Просмотреть файл

@ -37,8 +37,8 @@
#define RB_CHR2FIX RB_CHR2FIX
/** @endcond */
RBIMPL_ATTR_CONST_ON_NDEBUG()
RBIMPL_ATTR_CONSTEXPR_ON_NDEBUG(CXX14)
RBIMPL_ATTR_CONST_UNLESS_DEBUG()
RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14)
RBIMPL_ATTR_ARTIFICIAL()
static inline VALUE
RB_CHR2FIX(unsigned char c)

Просмотреть файл

@ -75,8 +75,8 @@ long rb_num2long(VALUE num);
unsigned long rb_num2ulong(VALUE num);
RBIMPL_SYMBOL_EXPORT_END()
RBIMPL_ATTR_CONST_ON_NDEBUG()
RBIMPL_ATTR_CONSTEXPR_ON_NDEBUG(CXX14)
RBIMPL_ATTR_CONST_UNLESS_DEBUG()
RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14)
RBIMPL_ATTR_ARTIFICIAL()
static inline VALUE
RB_INT2FIX(long i)
@ -110,8 +110,8 @@ rb_long2int_inline(long n)
return i;
}
RBIMPL_ATTR_CONST_ON_NDEBUG()
RBIMPL_ATTR_CONSTEXPR_ON_NDEBUG(CXX14)
RBIMPL_ATTR_CONST_UNLESS_DEBUG()
RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14)
static inline long
rbimpl_fix2long_by_idiv(VALUE x)
{
@ -128,8 +128,8 @@ rbimpl_fix2long_by_idiv(VALUE x)
return w;
}
RBIMPL_ATTR_CONST_ON_NDEBUG()
RBIMPL_ATTR_CONSTEXPR_ON_NDEBUG(CXX14)
RBIMPL_ATTR_CONST_UNLESS_DEBUG()
RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14)
static inline long
rbimpl_fix2long_by_shift(VALUE x)
{
@ -153,8 +153,8 @@ rbimpl_right_shift_is_arithmetic_p(void)
return (-1 >> 1) == -1;
}
RBIMPL_ATTR_CONST_ON_NDEBUG()
RBIMPL_ATTR_CONSTEXPR_ON_NDEBUG(CXX14)
RBIMPL_ATTR_CONST_UNLESS_DEBUG()
RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14)
static inline long
rb_fix2long(VALUE x)
{
@ -166,8 +166,8 @@ rb_fix2long(VALUE x)
}
}
RBIMPL_ATTR_CONST_ON_NDEBUG()
RBIMPL_ATTR_CONSTEXPR_ON_NDEBUG(CXX14)
RBIMPL_ATTR_CONST_UNLESS_DEBUG()
RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14)
static inline unsigned long
rb_fix2ulong(VALUE x)
{

Просмотреть файл

@ -35,8 +35,8 @@
#define RB_ST2FIX RB_ST2FIX
/** @endcond */
RBIMPL_ATTR_CONST_ON_NDEBUG()
RBIMPL_ATTR_CONSTEXPR_ON_NDEBUG(CXX14)
RBIMPL_ATTR_CONST_UNLESS_DEBUG()
RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(CXX14)
RBIMPL_ATTR_ARTIFICIAL()
/* See also [ruby-core:84395] [Bug #14218] [ruby-core:82687] [Bug #13877] */
static inline VALUE

Просмотреть файл

@ -36,11 +36,11 @@
# define RBIMPL_ATTR_CONST() /* void */
#endif
/** Enables #RBIMPL_ATTR_CONST iff. #RUBY_NDEBUG. */
#if RUBY_NDEBUG
# define RBIMPL_ATTR_CONST_ON_NDEBUG() RBIMPL_ATTR_CONST()
/** Enables #RBIMPL_ATTR_CONST iff. !RUBY_DEBUG. */
#if !RUBY_DEBUG
# define RBIMPL_ATTR_CONST_UNLESS_DEBUG() RBIMPL_ATTR_CONST()
#else
# define RBIMPL_ATTR_CONST_ON_NDEBUG() /* void */
# define RBIMPL_ATTR_CONST_UNLESS_DEBUG() /* void */
#endif
#endif /* RBIMPL_ATTR_CONST_H */

Просмотреть файл

@ -75,11 +75,11 @@
# define RBIMPL_ATTR_CONSTEXPR(_) /* void */
#endif
/** Enables #RBIMPL_ATTR_CONSTEXPR iff. #RUBY_NDEBUG. */
#if RUBY_NDEBUG
# define RBIMPL_ATTR_CONSTEXPR_ON_NDEBUG(_) RBIMPL_ATTR_CONSTEXPR(_)
/** Enables #RBIMPL_ATTR_CONSTEXPR iff. !RUBY_DEBUG. */
#if !RUBY_DEBUG
# define RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(_) RBIMPL_ATTR_CONSTEXPR(_)
#else
# define RBIMPL_ATTR_CONSTEXPR_ON_NDEBUG(_) /* void */
# define RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(_) /* void */
#endif
#endif /* RBIMPL_ATTR_CONSTEXPR_H */

Просмотреть файл

@ -33,11 +33,11 @@
# define RBIMPL_ATTR_PURE() /* void */
#endif
/** Enables #RBIMPL_ATTR_PURE iff. #RUBY_NDEBUG. */
#if RUBY_NDEBUG
# define RBIMPL_ATTR_PURE_ON_NDEBUG() RBIMPL_ATTR_PURE()
/** Enables #RBIMPL_ATTR_PURE iff. !RUBY_DEBUG. */
#if !RUBY_DEBUG
# define RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_PURE()
#else
# define RBIMPL_ATTR_PURE_ON_NDEBUG() /* void */
# define RBIMPL_ATTR_PURE_UNLESS_DEBUG() /* void */
#endif
#endif /* RBIMPL_ATTR_PURE_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)

Просмотреть файл

@ -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)

Просмотреть файл

@ -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 *

Просмотреть файл

@ -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)

Просмотреть файл

@ -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)

Просмотреть файл

@ -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)

Просмотреть файл

@ -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);

Просмотреть файл

@ -209,7 +209,7 @@ void rb_obj_infect(VALUE victim, VALUE carrier);
void rb_freeze_singleton_class(VALUE klass);
RBIMPL_SYMBOL_EXPORT_END()
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
RBIMPL_ATTR_FORCEINLINE()
static bool
@ -226,7 +226,7 @@ RB_FL_ABLE(VALUE obj)
}
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline VALUE
RB_FL_TEST_RAW(VALUE obj, VALUE flags)
@ -235,7 +235,7 @@ RB_FL_TEST_RAW(VALUE obj, VALUE flags)
return RBASIC(obj)->flags & flags;
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline VALUE
RB_FL_TEST(VALUE obj, VALUE flags)
@ -248,7 +248,7 @@ RB_FL_TEST(VALUE obj, VALUE flags)
}
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline bool
RB_FL_ANY_RAW(VALUE obj, VALUE flags)
@ -256,7 +256,7 @@ RB_FL_ANY_RAW(VALUE obj, VALUE flags)
return RB_FL_TEST_RAW(obj, flags);
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline bool
RB_FL_ANY(VALUE obj, VALUE flags)
@ -264,7 +264,7 @@ RB_FL_ANY(VALUE obj, VALUE flags)
return RB_FL_TEST(obj, flags);
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline bool
RB_FL_ALL_RAW(VALUE obj, VALUE flags)
@ -272,7 +272,7 @@ RB_FL_ALL_RAW(VALUE obj, VALUE flags)
return RB_FL_TEST_RAW(obj, flags) == flags;
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline bool
RB_FL_ALL(VALUE obj, VALUE flags)
@ -355,7 +355,7 @@ RB_FL_REVERSE(VALUE obj, VALUE flags)
}
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline bool
RB_OBJ_TAINTABLE(VALUE obj)
@ -374,7 +374,7 @@ RB_OBJ_TAINTABLE(VALUE obj)
}
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline VALUE
RB_OBJ_TAINTED_RAW(VALUE obj)
@ -382,7 +382,7 @@ RB_OBJ_TAINTED_RAW(VALUE obj)
return RB_FL_TEST_RAW(obj, RUBY_FL_TAINT);
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline bool
RB_OBJ_TAINTED(VALUE obj)
@ -424,7 +424,7 @@ RB_OBJ_INFECT(VALUE dst, VALUE src)
}
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
/* It is intentional not to return bool here. There is a place in ruby core
* (namely class.c:singleton_class_of()) where return value of this function is
@ -435,7 +435,7 @@ RB_OBJ_FROZEN_RAW(VALUE obj)
return RB_FL_TEST_RAW(obj, RUBY_FL_FREEZE);
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline bool
RB_OBJ_FROZEN(VALUE obj)

Просмотреть файл

@ -145,7 +145,7 @@ rb_class_of(VALUE obj)
return rb_cFloat;
}
#if RUBY_NDEBUG
#if !RUBY_DEBUG
RBIMPL_UNREACHABLE_RETURN(Qfalse);
#else
RUBY_ASSERT_FAIL("unexpected type");

Просмотреть файл

@ -137,7 +137,7 @@ void rb_gc_unprotect_logging(void *objptr, const char *filename, int line);
#endif
RBIMPL_SYMBOL_EXPORT_END()
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline bool
RB_OBJ_PROMOTED_RAW(VALUE obj)
@ -146,7 +146,7 @@ RB_OBJ_PROMOTED_RAW(VALUE obj)
return RB_FL_ANY_RAW(obj, RUBY_FL_PROMOTED);
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline bool
RB_OBJ_PROMOTED(VALUE obj)

Просмотреть файл

@ -95,7 +95,7 @@
#define RB_TYPE_P RB_TYPE_P
#define Check_Type Check_Type
#if RUBY_NDEBUG
#if !RUBY_DEBUG
# define RBIMPL_ASSERT_TYPE(v, t) RBIMPL_ASSERT_OR_ASSUME(RB_TYPE_P((v), (t)))
#else
# define RBIMPL_ASSERT_TYPE Check_Type
@ -147,7 +147,7 @@ RBIMPL_ATTR_COLD()
void rb_check_type(VALUE obj, int t);
RBIMPL_SYMBOL_EXPORT_END()
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline enum ruby_value_type
RB_BUILTIN_TYPE(VALUE obj)
@ -158,7 +158,7 @@ RB_BUILTIN_TYPE(VALUE obj)
return RBIMPL_CAST((enum ruby_value_type)ret);
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
static inline bool
rb_integer_type_p(VALUE obj)
{
@ -173,7 +173,7 @@ rb_integer_type_p(VALUE obj)
}
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
static inline enum ruby_value_type
rb_type(VALUE obj)
{
@ -204,7 +204,7 @@ rb_type(VALUE obj)
}
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline bool
RB_FLOAT_TYPE_P(VALUE obj)
@ -220,7 +220,7 @@ RB_FLOAT_TYPE_P(VALUE obj)
}
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline bool
RB_DYNAMIC_SYM_P(VALUE obj)
@ -233,7 +233,7 @@ RB_DYNAMIC_SYM_P(VALUE obj)
}
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline bool
RB_SYMBOL_P(VALUE obj)
@ -241,7 +241,7 @@ RB_SYMBOL_P(VALUE obj)
return RB_STATIC_SYM_P(obj) || RB_DYNAMIC_SYM_P(obj);
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
RBIMPL_ATTR_FORCEINLINE()
static bool
@ -279,7 +279,7 @@ rbimpl_RB_TYPE_P_fastpath(VALUE obj, enum ruby_value_type t)
}
}
RBIMPL_ATTR_PURE_ON_NDEBUG()
RBIMPL_ATTR_PURE_UNLESS_DEBUG()
RBIMPL_ATTR_ARTIFICIAL()
static inline bool
RB_TYPE_P(VALUE obj, enum ruby_value_type t)

Просмотреть файл

@ -8,14 +8,9 @@
* modify this file, provided that the conditions mentioned in the
* file COPYING are met. Consult the file for details.
*/
#include "ruby/assert.h"
#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L)
/* C89 compilers are required to support strings of only 509 chars. */
/* can't use RUBY_ASSERT for such compilers. */
#include <assert.h>
#else
#include "ruby/assert.h"
#undef assert
#define assert RUBY_ASSERT
#endif
#define assert RUBY_ASSERT_NDEBUG
#endif /* RUBY_TOPLEVEL_ASSERT_H */