1#ifndef RBIMPL_XMALLOC_H
2#define RBIMPL_XMALLOC_H
40#ifndef USE_GC_MALLOC_OBJ_INFO_DETAILS
41# define USE_GC_MALLOC_OBJ_INFO_DETAILS 0
44#define xmalloc ruby_xmalloc
45#define xmalloc2 ruby_xmalloc2
46#define xcalloc ruby_xcalloc
47#define xrealloc ruby_xrealloc
48#define xrealloc2 ruby_xrealloc2
49#define xfree ruby_xfree
256#if USE_GC_MALLOC_OBJ_INFO_DETAILS || defined(__DOXYGEN)
257# define ruby_xmalloc(s1) ruby_xmalloc_with_location(s1, __FILE__, __LINE__)
258# define ruby_xmalloc2(s1, s2) ruby_xmalloc2_with_location(s1, s2, __FILE__, __LINE__)
259# define ruby_xcalloc(s1, s2) ruby_xcalloc_with_location(s1, s2, __FILE__, __LINE__)
260# define ruby_xrealloc(ptr, s1) ruby_xrealloc_with_location(ptr, s1, __FILE__, __LINE__)
261# define ruby_xrealloc2(ptr, s1, s2) ruby_xrealloc2_with_location(ptr, s1, s2, __FILE__, __LINE__)
305ruby_xmalloc_with_location(
size_t s,
const char *
file,
int line)
308 ruby_malloc_info_file =
file;
309 ruby_malloc_info_line = line;
311 ruby_malloc_info_file =
NULL;
316ruby_xmalloc2_with_location(
size_t s1,
size_t s2,
const char *
file,
int line)
319 ruby_malloc_info_file =
file;
320 ruby_malloc_info_line = line;
322 ruby_malloc_info_file =
NULL;
327ruby_xcalloc_with_location(
size_t s1,
size_t s2,
const char *
file,
int line)
330 ruby_malloc_info_file =
file;
331 ruby_malloc_info_line = line;
333 ruby_malloc_info_file =
NULL;
338ruby_xrealloc_with_location(
void *
ptr,
size_t s,
const char *
file,
int line)
341 ruby_malloc_info_file =
file;
342 ruby_malloc_info_line = line;
344 ruby_malloc_info_file =
NULL;
349ruby_xrealloc2_with_location(
void *
ptr,
size_t s1,
size_t s2,
const char *
file,
int line)
352 ruby_malloc_info_file =
file;
353 ruby_malloc_info_line = line;
355 ruby_malloc_info_file =
NULL;
Defines RBIMPL_ATTR_ALLOC_SIZE.
#define RBIMPL_ATTR_ALLOC_SIZE(tuple)
Wraps (or simulates) __attribute__((alloc_size))
Tewaking visibility of C variables/functions.
#define RBIMPL_SYMBOL_EXPORT_END()
Counterpart of RBIMPL_SYMBOL_EXPORT_BEGIN.
#define RBIMPL_SYMBOL_EXPORT_BEGIN()
Shortcut macro equivalent to RUBY_SYMBOL_EXPORT_BEGIN extern "C" {.
void * ruby_xmalloc2_body(size_t n, size_t size)
void * ruby_xrealloc_body(void *ptr, size_t new_size)
void * ruby_xmalloc_body(size_t size)
void * ruby_xcalloc_body(size_t n, size_t size)
void * ruby_xrealloc2_body(void *ptr, size_t n, size_t size)
Thin wrapper to ruby/config.h.
Defines RBIMPL_ATTR_NODISCARD.
#define RBIMPL_ATTR_NODISCARD()
Wraps (or simulates) [[nodiscard]].
Defines RBIMPL_ATTR_NOEXCEPT.
#define RBIMPL_ATTR_NOEXCEPT(_)
Wraps (or simulates) C++11 noexcept
Defines RBIMPL_ATTR_RESTRICT.
#define RBIMPL_ATTR_RESTRICT()
Wraps (or simulates) __declspec(restrict)
Defines RBIMPL_ATTR_RETURNS_NONNULL.
#define RBIMPL_ATTR_RETURNS_NONNULL()
Wraps (or simulates) __attribute__((returns_nonnull))
void * ruby_xrealloc(void *ptr, size_t newsiz)
Resize the storage instance.
void * ruby_xrealloc2(void *ptr, size_t newelems, size_t newsiz)
Identical to ruby_xrealloc(), except it resizes the given storage instance to newelems * newsiz bytes...
void ruby_xfree(void *ptr)
Deallocates a storage instance.
void * ruby_xmalloc2(size_t nelems, size_t elemsiz)
Identical to ruby_xmalloc(), except it allocates nelems * elemsiz bytes.
void * ruby_xmalloc(size_t size)
Allocates a storage instance.
void * ruby_xcalloc(size_t nelems, size_t elemsiz)
Identical to ruby_xmalloc2(), except it zero-fills the region before it returns.