diff options
author | 卜部昌平 <shyouhei@ruby-lang.org> | 2020-09-23 13:30:56 +0900 |
---|---|---|
committer | 卜部昌平 <shyouhei@ruby-lang.org> | 2020-09-25 11:38:33 +0900 |
commit | 873fb1aa4cab7a14f2b38a05f5888c111ea3bc69 (patch) | |
tree | b09f286ea0acbf51d82659e32a87ecf0ac64fabf /include | |
parent | e9fb2bc873a55181ac7d581e7252db3754a3209d (diff) |
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.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3570
Diffstat (limited to 'include')
-rw-r--r-- | include/ruby/internal/memory.h | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/include/ruby/internal/memory.h b/include/ruby/internal/memory.h index 0128a7f748..974c21e19c 100644 --- a/include/ruby/internal/memory.h +++ b/include/ruby/internal/memory.h @@ -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. */ |