@@ -59,10 +59,9 @@ unsafe impl GlobalAlloc for System {
5959}
6060
6161cfg_if:: cfg_if! {
62- // We use posix_memalign wherever possible, but not all targets have that function.
62+ // We use posix_memalign wherever possible, but some targets have very incomplete POSIX coverage
63+ // so we need a fallback for those.
6364 if #[ cfg( any(
64- target_os = "redox" ,
65- target_os = "espidf" ,
6665 target_os = "horizon" ,
6766 target_os = "vita" ,
6867 ) ) ] {
@@ -74,12 +73,11 @@ cfg_if::cfg_if! {
7473 #[ inline]
7574 unsafe fn aligned_malloc( layout: & Layout ) -> * mut u8 {
7675 let mut out = ptr:: null_mut( ) ;
77- // We prefer posix_memalign over aligned_malloc since with aligned_malloc,
78- // implementations are making almost arbitrary choices for which alignments are
79- // "supported", making it hard to use. For instance, some implementations require the
80- // size to be a multiple of the alignment (wasi emmalloc), while others require the
81- // alignment to be at least the pointer size (Illumos, macOS) -- which may or may not be
82- // standards-compliant, but that does not help us.
76+ // We prefer posix_memalign over aligned_malloc since it is more widely available, and
77+ // since with aligned_malloc, implementations are making almost arbitrary choices for
78+ // which alignments are "supported", making it hard to use. For instance, some
79+ // implementations require the size to be a multiple of the alignment (wasi emmalloc),
80+ // while others require the alignment to be at least the pointer size (Illumos, macOS).
8381 // posix_memalign only has one, clear requirement: that the alignment be a multiple of
8482 // `sizeof(void*)`. Since these are all powers of 2, we can just use max.
8583 let align = layout. align( ) . max( crate :: mem:: size_of:: <usize >( ) ) ;
0 commit comments