зеркало из https://github.com/github/ruby.git
ALLOCA_N: do not use RUBY_ALIGNOF
Now that RUBY_ALIGNOF behaves like C11's _Alignof. This is not necessarily the best stack arrangement. We can just give up using __builtin_alloca_with_align(), and let alloca choose what is optimal.
This commit is contained in:
Родитель
e9fb2bc873
Коммит
873fb1aa4c
|
@ -109,18 +109,8 @@ extern void *alloca();
|
|||
#define RB_REALLOC_N(var,type,n) \
|
||||
((var) = RBIMPL_CAST((type *)ruby_xrealloc2((void *)(var), (n), sizeof(type))))
|
||||
|
||||
/* I don't know why but __builtin_alloca_with_align's second argument
|
||||
takes bits rather than bytes. */
|
||||
#if RBIMPL_HAS_BUILTIN(__builtin_alloca_with_align)
|
||||
# define ALLOCA_N(type, n) \
|
||||
RBIMPL_CAST((type *) \
|
||||
__builtin_alloca_with_align( \
|
||||
rbimpl_size_mul_or_raise(sizeof(type), (n)), \
|
||||
RUBY_ALIGNOF(type) * CHAR_BIT))
|
||||
#else
|
||||
# define ALLOCA_N(type,n) \
|
||||
#define ALLOCA_N(type,n) \
|
||||
RBIMPL_CAST((type *)alloca(rbimpl_size_mul_or_raise(sizeof(type), (n))))
|
||||
#endif
|
||||
|
||||
/* allocates _n_ bytes temporary buffer and stores VALUE including it
|
||||
* in _v_. _n_ may be evaluated twice. */
|
||||
|
|
Загрузка…
Ссылка в новой задаче