[GHC] #7275: Give more detailed information about PINNED data in a heap profile

GHC ghc-devs at haskell.org
Tue Jul 23 22:05:07 CEST 2013


#7275: Give more detailed information about PINNED data in a heap profile
-------------------------------------+------------------------------------
        Reporter:  edsko             |            Owner:
            Type:  feature request   |           Status:  new
        Priority:  normal            |        Milestone:  7.8.1
       Component:  Compiler          |          Version:  7.6.1
      Resolution:                    |         Keywords:
Operating System:  Unknown/Multiple  |     Architecture:  Unknown/Multiple
 Type of failure:  None/Unknown      |       Difficulty:  Unknown
       Test Case:                    |       Blocked By:
        Blocking:                    |  Related Tickets:
-------------------------------------+------------------------------------
Changes (by igloo):

 * owner:  igloo =>


Comment:

 Simon and I discussed this a while ago. Here's his summary of where we
 ended up:

 ----

 I think what we want to do is basically mark-sweep on the BF_PINNED blocks
 when profiling (only).  The main question is how to represent the mark
 bit:
 I think just using the low-order bit of the info pointer should be fine,
 since
 that's what we use for ordinary forwarding pointers too.  Specifically:

  - in evacuate_large, if the block is BF_PINNED, mark the object by
    setting the low-order bit of its info table. (PROFILING only)

  - after the GC is finished, sweep all the BF_PINNED blocks that we
    touched, which can be found by traversing the scavenged_large_objects
    list of each generation.  For each BF_PINNED block, walk through the
    memory zeroing out any unmarked ARR_WORDS objects, and unmarking the
    marked objects.

  - in allocatePinned, zero out any slop caused by alignment constraints.

 Then I believe the pinned memory can be traversed correctly by the heap
 profiler with no further changes.

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




More information about the ghc-tickets mailing list