[GHC] #15665: Break up the stable pointer table

GHC ghc-devs at haskell.org
Mon Sep 24 23:08:40 UTC 2018


#15665: Break up the stable pointer table
-------------------------------------+-------------------------------------
        Reporter:  dfeuer            |                Owner:  (none)
            Type:  feature request   |               Status:  new
        Priority:  normal            |            Milestone:  8.6.1
       Component:  Compiler          |              Version:  8.4.3
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #7670             |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by dfeuer):

 Ah, I think I do see one. Start by using one free list per block, and
 tracking the number of free list entries both per block and per
 capability. When adding an entry to the free list for a block, check
 whether both of the following are true: 1. The block has "sufficient" free
 entries (to be worth the synchronization overhead) and 2. The capability
 has "sufficient" other free entries (so it's not going to have to jump
 straight from the donor line to the recipient line). In that case, the
 capability relinquishes the block to a shared list. Any capability that
 runs out of free entries can try to get a (partially used) block from that
 list and only allocate a fresh one if that fails.

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


More information about the ghc-tickets mailing list