mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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:
parent
b10b37924a
commit
21991e6ca5
Notes:
git
2020-05-26 03:21:52 +09:00
19 changed files with 82 additions and 82 deletions
|
@ -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 */
|
||||
|
|
Loading…
Add table
Reference in a new issue