[GHC] #8296: Patch: new primops for byte range copies ByteArray# <-> Addr#
GHC
ghc-devs at haskell.org
Sun Sep 15 22:20:35 CEST 2013
#8296: Patch: new primops for byte range copies ByteArray# <-> Addr#
-------------------------------------+------------------------------------
Reporter: duncan | Owner:
Type: feature request | Status: closed
Priority: normal | Milestone:
Component: Compiler | Version: 7.6.3
Resolution: fixed | Keywords:
Operating System: Unknown/Multiple | Architecture: Unknown/Multiple
Type of failure: None/Unknown | Difficulty: Unknown
Test Case: | Blocked By:
Blocking: | Related Tickets:
-------------------------------------+------------------------------------
Changes (by thoughtpolice):
* status: patch => closed
* resolution: => fixed
Comment:
Merged.
{{{
commit f11289f65e77b9e3178b08f5ca4472762c77c42e
Author: Duncan Coutts <duncan at well-typed.com>
Date: Fri Sep 13 09:19:24 2013 +0100
New primops for byte range copies ByteArray# <-> Addr#
We have primops for copying ranges of bytes between ByteArray#s:
* ByteArray# -> MutableByteArray#
* MutableByteArray# -> MutableByteArray#
This extends it with three further cases:
* Addr# -> MutableByteArray#
* ByteArray# -> Addr#
* MutableByteArray# -> Addr#
One use case for these is copying between ForeignPtr-based
representations and in-heap arrays (like Text, UArray etc).
The implementation is essentially the same as for the existing
primops, and shares the memcpy stuff in the code generators.
Defficiencies / future directions: none of these primops (existing
or the new ones) let one take advantage of knowing that ByteArray#s
are word-aligned in memory. Though it is unclear that any of the
code generators would make use of this information unless the size
to copy is also known at compile time.
Signed-off-by: Austin Seipp <austin at well-typed.com>
}}}
Duncan, I also had to fix the actual primops in
bb532682aa47c30dfd49039c5ab282352d38dac0, since they claimed to work over
`ST RealWorld`, but instead should work over `ST s`
{{{
commit bb532682aa47c30dfd49039c5ab282352d38dac0
Author: Austin Seipp <austin at well-typed.com>
Date: Sun Sep 15 15:15:17 2013 -0500
Fix the type signatures of new copy primops.
They claimed to work over 'ST RealWorld', when instead they should be
parameterized in the state type. This fixes the cgrun070.
Signed-off-by: Austin Seipp <austin at well-typed.com>
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8296#comment:6>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list