summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author卜部昌平 <shyouhei@ruby-lang.org>2020-09-23 13:30:56 +0900
committer卜部昌平 <shyouhei@ruby-lang.org>2020-09-25 11:38:33 +0900
commit873fb1aa4cab7a14f2b38a05f5888c111ea3bc69 (patch)
treeb09f286ea0acbf51d82659e32a87ecf0ac64fabf
parente9fb2bc873a55181ac7d581e7252db3754a3209d (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
-rw-r--r--include/ruby/internal/memory.h12
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. */