[GHC] #6084: Add stg_ap_pnnv and related call patterns

GHC ghc-devs at haskell.org
Wed Nov 27 14:39:22 UTC 2013


#6084: Add stg_ap_pnnv and related call patterns
-------------------------------------+------------------------------------
        Reporter:  SimonMeier        |            Owner:  simonmar
            Type:  feature request   |           Status:  new
        Priority:  high              |        Milestone:  7.8.1
       Component:  Runtime System    |          Version:  7.7
      Resolution:                    |         Keywords:
Operating System:  Unknown/Multiple  |     Architecture:  Unknown/Multiple
 Type of failure:  None/Unknown      |       Difficulty:  Unknown
       Test Case:                    |       Blocked By:
        Blocking:  8313              |  Related Tickets:
-------------------------------------+------------------------------------

Comment (by parcs):

 Here's a patch that fixes up Simon's original patch. It fixes three issues
 with the original patch:

 1. The offset passed to `cmmLoadIndex` should be in units of the object's
 representation size, not necessarily bytes. So we divide `offset` by
 `rep_bytes`.
 2. The `tablesNextToCode` logic was reversed.
 3. We weren't untagging and dereferencing the function closure before
 passing it to `funInfoArity` and `entryCode`.

 With these three changes, the code in #8313 has a significant speed
 improvement. Before (that is, with vanilla GHC), the `auto` case would
 take 2.15s and the `manual` case 4.0s. Now, the `manual` case takes 0.75s.

 nofib doesn't seem to show a significant improvement in program runtime,
 but nofib compile times are down an average of 1.5% with a maximum
 improvement of 8%. I may be misinterpreting the results, however.

 int-e, how did you trigger the "PAP object entered!" error? I haven't come
 across it.

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


More information about the ghc-tickets mailing list