[GHC] #9281: Rewrite `integer-gmp` to use only non-allocating GMP functions

GHC ghc-devs at haskell.org
Wed Nov 19 10:02:57 UTC 2014


#9281: Rewrite `integer-gmp` to use only non-allocating GMP functions
-------------------------------------+-------------------------------------
              Reporter:  hvr         |            Owner:  hvr
                  Type:  task        |           Status:  patch
              Priority:  normal      |        Milestone:  7.10.1
             Component:  Core        |          Version:
  Libraries                          |         Keywords:  integer-gmp
            Resolution:              |     Architecture:  Unknown/Multiple
      Operating System:              |       Difficulty:  Unknown
  Unknown/Multiple                   |       Blocked By:
       Type of failure:              |  Related Tickets:  #8647
  None/Unknown                       |
             Test Case:              |
              Blocking:              |
Differential Revisions:  Phab:D82    |
-------------------------------------+-------------------------------------

Comment (by Herbert Valerio Riedel <hvr@…>):

 In [changeset:"42244668af6d8c1dd6a2d64af90ed57d8ecd8d88/ghc"]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="42244668af6d8c1dd6a2d64af90ed57d8ecd8d88"
 Reimplement im/export primitives for integer-gmp2

 The import/export operations were available in `integer-gmp-0.5.1`
 already, but need to be reimplemented from scratch for the
 `integer-gmp-1.0.0` rewrite.

 This also adds a few more operations than were previously available for
 use w/ the `BigNat` type (which will be useful for implementing
 serialisation for the upcoming `Natural` type)

 Specifically, the following operations are (re)added (albeit with
 slightly different type-signatures):

  - `sizeInBaseBigNat`
  - `sizeInBaseInteger`
  - `sizeInBaseWord#`

  - `exportBigNatToAddr`
  - `exportIntegerToAddr`
  - `exportWordToAddr`
  - `exportBigNatToMutableByteArray`
  - `exportIntegerToMutableByteArray`
  - `exportWordToMutableByteArray`

  - `importBigNatFromAddr`
  - `importIntegerFromAddr`
  - `importBigNatFromByteArray`
  - `importIntegerFromByteArray`

 NOTE: The `integerGmpInternals` test-case is updated but not yet
       re-enabled as it contains tests for other primitives which aren't
       yet reimplemented.

 This addresses #9281

 Reviewed By: austin, duncan

 Differential Revision: https://phabricator.haskell.org/D480
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9281#comment:18>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list