Opened 7 years ago

Closed 7 years ago

#7067 closed feature request (fixed)

Add alignment-restricted ForeignPtr allocation actions

Reported by: nicolast Owned by: simonmar
Priority: normal Milestone: 7.6.1
Component: libraries/base Version:
Keywords: Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: None/Unknown Test Case:
Blocked By: Blocking:
Related Tickets: Differential Rev(s):
Wiki Page:


Whilst GHC.ForeignPtr exports some actions to allocate buffers containing an element of some type, or of some specific byte-length efficiently, and there's an implementation of newAlignedPinnedByteArray# used internally, there's no way to request such buffer of a given size and at a given alignment.

The ability to enforce a specific alignment for some memory buffer is important e.g. when working with SIMD instructions (which is my original use-case). My attempts to work-around the lack of this function failed miserably (with a reproducible test-case) as mentioned in [1].


Attachments (1)

0001-Add-alignment-restricted-ForeignPtr-allocation-actio.patch (2.8 KB) - added by nicolast 7 years ago.
Add alignment-restricted allocation actions to GHC.ForeignPtr

Download all attachments as: .zip

Change History (4)

Changed 7 years ago by nicolast

Add alignment-restricted allocation actions to GHC.ForeignPtr

comment:1 Changed 7 years ago by nicolast

Status: newpatch

Using attachment:ticket:7067:0001-Add-alignment-restricted-ForeignPtr-allocation-actio.patch and an adapted mallocVector implementation (see mallocVectorMine3 at the corruption as found earlier (using mallocVectorMine1 or mallocVectorMine2) no longer occur.

comment:2 Changed 7 years ago by simonmar

difficulty: Unknown
Milestone: 7.6.1
Owner: set to simonmar

Patch looks good to me.

comment:3 Changed 7 years ago by simonmar

Resolution: fixed
Status: patchclosed

Applied, thanks!

Note: See TracTickets for help on using tickets.