Add support for the deprecated
attribute
This is useful for enforcing the usage of getter/setter functions to access fields which are considered private or have unique access constraints.
This commit is contained in:
parent
162ff8365d
commit
120abd703a
24
configure.ac
24
configure.ac
@ -988,6 +988,30 @@ if test "x${je_cv_cold}" = "xyes" ; then
|
|||||||
AC_DEFINE([JEMALLOC_HAVE_ATTR_COLD], [ ], [ ])
|
AC_DEFINE([JEMALLOC_HAVE_ATTR_COLD], [ ], [ ])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
dnl Check for deprecated attribute support.
|
||||||
|
JE_CFLAGS_SAVE()
|
||||||
|
JE_CFLAGS_ADD([-Wdeprecated-declarations])
|
||||||
|
JE_COMPILABLE([deprecated attribute],
|
||||||
|
[#if !__has_attribute(deprecated)
|
||||||
|
#error "deprecated attribute not supported"
|
||||||
|
#endif
|
||||||
|
struct has_deprecated_field {
|
||||||
|
int good;
|
||||||
|
int __attribute__((deprecated("Do not use"))) bad;
|
||||||
|
};
|
||||||
|
],
|
||||||
|
[struct has_deprecated_field instance;
|
||||||
|
instance.good = 0;
|
||||||
|
instance.bad = 1;
|
||||||
|
],
|
||||||
|
[je_cv_deprecated])
|
||||||
|
JE_CFLAGS_RESTORE()
|
||||||
|
if test "x${je_cv_deprecated}" = "xyes" ; then
|
||||||
|
AC_DEFINE([JEMALLOC_HAVE_ATTR_DEPRECATED], [ ], [ ])
|
||||||
|
JE_CFLAGS_ADD([-Wdeprecated-declarations])
|
||||||
|
JE_CXXFLAGS_ADD([-Wdeprecated-declarations])
|
||||||
|
fi
|
||||||
|
|
||||||
dnl Check for VM_MAKE_TAG for mmap support.
|
dnl Check for VM_MAKE_TAG for mmap support.
|
||||||
JE_COMPILABLE([vm_make_tag],
|
JE_COMPILABLE([vm_make_tag],
|
||||||
[#include <sys/mman.h>
|
[#include <sys/mman.h>
|
||||||
|
@ -53,6 +53,7 @@
|
|||||||
# define JEMALLOC_DIAGNOSTIC_IGNORE_FRAME_ADDRESS
|
# define JEMALLOC_DIAGNOSTIC_IGNORE_FRAME_ADDRESS
|
||||||
# define JEMALLOC_DIAGNOSTIC_IGNORE_TYPE_LIMITS
|
# define JEMALLOC_DIAGNOSTIC_IGNORE_TYPE_LIMITS
|
||||||
# define JEMALLOC_DIAGNOSTIC_IGNORE_ALLOC_SIZE_LARGER_THAN
|
# define JEMALLOC_DIAGNOSTIC_IGNORE_ALLOC_SIZE_LARGER_THAN
|
||||||
|
# define JEMALLOC_DIAGNOSTIC_IGNORE_DEPRECATED
|
||||||
# define JEMALLOC_DIAGNOSTIC_DISABLE_SPURIOUS
|
# define JEMALLOC_DIAGNOSTIC_DISABLE_SPURIOUS
|
||||||
/* #pragma GCC diagnostic first appeared in gcc 4.6. */
|
/* #pragma GCC diagnostic first appeared in gcc 4.6. */
|
||||||
#elif (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && \
|
#elif (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && \
|
||||||
@ -92,6 +93,12 @@
|
|||||||
# else
|
# else
|
||||||
# define JEMALLOC_DIAGNOSTIC_IGNORE_ALLOC_SIZE_LARGER_THAN
|
# define JEMALLOC_DIAGNOSTIC_IGNORE_ALLOC_SIZE_LARGER_THAN
|
||||||
# endif
|
# endif
|
||||||
|
# ifdef JEMALLOC_HAVE_ATTR_DEPRECATED
|
||||||
|
# define JEMALLOC_DIAGNOSTIC_IGNORE_DEPRECATED \
|
||||||
|
JEMALLOC_DIAGNOSTIC_IGNORE("-Wdeprecated-declarations")
|
||||||
|
# else
|
||||||
|
# define JEMALLOC_DIAGNOSTIC_IGNORE_DEPRECATED
|
||||||
|
# endif
|
||||||
# define JEMALLOC_DIAGNOSTIC_DISABLE_SPURIOUS \
|
# define JEMALLOC_DIAGNOSTIC_DISABLE_SPURIOUS \
|
||||||
JEMALLOC_DIAGNOSTIC_PUSH \
|
JEMALLOC_DIAGNOSTIC_PUSH \
|
||||||
JEMALLOC_DIAGNOSTIC_IGNORE_UNUSED_PARAMETER
|
JEMALLOC_DIAGNOSTIC_IGNORE_UNUSED_PARAMETER
|
||||||
@ -103,9 +110,16 @@
|
|||||||
# define JEMALLOC_DIAGNOSTIC_IGNORE_FRAME_ADDRESS
|
# define JEMALLOC_DIAGNOSTIC_IGNORE_FRAME_ADDRESS
|
||||||
# define JEMALLOC_DIAGNOSTIC_IGNORE_TYPE_LIMITS
|
# define JEMALLOC_DIAGNOSTIC_IGNORE_TYPE_LIMITS
|
||||||
# define JEMALLOC_DIAGNOSTIC_IGNORE_ALLOC_SIZE_LARGER_THAN
|
# define JEMALLOC_DIAGNOSTIC_IGNORE_ALLOC_SIZE_LARGER_THAN
|
||||||
|
# define JEMALLOC_DIAGNOSTIC_IGNORE_DEPRECATED
|
||||||
# define JEMALLOC_DIAGNOSTIC_DISABLE_SPURIOUS
|
# define JEMALLOC_DIAGNOSTIC_DISABLE_SPURIOUS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define JEMALLOC_SUPPRESS_WARN_ON_USAGE(...) \
|
||||||
|
JEMALLOC_DIAGNOSTIC_PUSH \
|
||||||
|
JEMALLOC_DIAGNOSTIC_IGNORE_DEPRECATED \
|
||||||
|
__VA_ARGS__ \
|
||||||
|
JEMALLOC_DIAGNOSTIC_POP
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Disables spurious diagnostics for all headers. Since these headers are not
|
* Disables spurious diagnostics for all headers. Since these headers are not
|
||||||
* included by users directly, it does not affect their diagnostic settings.
|
* included by users directly, it does not affect their diagnostic settings.
|
||||||
|
@ -19,6 +19,9 @@
|
|||||||
/* Defined if cold attribute is supported. */
|
/* Defined if cold attribute is supported. */
|
||||||
#undef JEMALLOC_HAVE_ATTR_COLD
|
#undef JEMALLOC_HAVE_ATTR_COLD
|
||||||
|
|
||||||
|
/* Defined if deprecated attribute is supported. */
|
||||||
|
#undef JEMALLOC_HAVE_ATTR_DEPRECATED
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Define overrides for non-standard allocator-related functions if they are
|
* Define overrides for non-standard allocator-related functions if they are
|
||||||
* present on the system.
|
* present on the system.
|
||||||
|
@ -86,6 +86,7 @@
|
|||||||
# define JEMALLOC_ALLOCATOR
|
# define JEMALLOC_ALLOCATOR
|
||||||
# endif
|
# endif
|
||||||
# define JEMALLOC_COLD
|
# define JEMALLOC_COLD
|
||||||
|
# define JEMALLOC_WARN_ON_USAGE(warning_message)
|
||||||
#elif defined(JEMALLOC_HAVE_ATTR)
|
#elif defined(JEMALLOC_HAVE_ATTR)
|
||||||
# define JEMALLOC_ATTR(s) __attribute__((s))
|
# define JEMALLOC_ATTR(s) __attribute__((s))
|
||||||
# define JEMALLOC_ALIGNED(s) JEMALLOC_ATTR(aligned(s))
|
# define JEMALLOC_ALIGNED(s) JEMALLOC_ATTR(aligned(s))
|
||||||
@ -126,6 +127,11 @@
|
|||||||
# else
|
# else
|
||||||
# define JEMALLOC_COLD
|
# define JEMALLOC_COLD
|
||||||
# endif
|
# endif
|
||||||
|
# ifdef JEMALLOC_HAVE_ATTR_DEPRECATED
|
||||||
|
# define JEMALLOC_WARN_ON_USAGE(warning_message) JEMALLOC_ATTR(deprecated(warning_message))
|
||||||
|
# else
|
||||||
|
# define JEMALLOC_WARN_ON_USAGE(warning_message)
|
||||||
|
# endif
|
||||||
#else
|
#else
|
||||||
# define JEMALLOC_ATTR(s)
|
# define JEMALLOC_ATTR(s)
|
||||||
# define JEMALLOC_ALIGNED(s)
|
# define JEMALLOC_ALIGNED(s)
|
||||||
@ -140,6 +146,7 @@
|
|||||||
# define JEMALLOC_RESTRICT_RETURN
|
# define JEMALLOC_RESTRICT_RETURN
|
||||||
# define JEMALLOC_ALLOCATOR
|
# define JEMALLOC_ALLOCATOR
|
||||||
# define JEMALLOC_COLD
|
# define JEMALLOC_COLD
|
||||||
|
# define JEMALLOC_WARN_ON_USAGE(warning_message)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || (defined(__linux__) && !defined(__GLIBC__))) && !defined(JEMALLOC_NO_RENAME)
|
#if (defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || (defined(__linux__) && !defined(__GLIBC__))) && !defined(JEMALLOC_NO_RENAME)
|
||||||
|
Loading…
Reference in New Issue
Block a user