[GHC] #12622: Unboxed static pointers lead to missing SPT entries

GHC ghc-devs at haskell.org
Fri Nov 18 09:18:30 UTC 2016


#12622: Unboxed static pointers lead to missing SPT entries
-------------------------------------+-------------------------------------
        Reporter:  mboes             |                Owner:
                                     |  facundo.dominguez
            Type:  bug               |               Status:  patch
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):  Phab:D2709
       Wiki Page:                    |  Phab:D2720
-------------------------------------+-------------------------------------

Comment (by simonpj):

 Well, maybe.  There is a complexity-budget cost that I remain anxious
 about.

 If you want to pursue the current line, let's not introduce a "twin" data
 constructor.  Rather, how about this:

 * Make `(static e)` expand into the ordinary function call `makeStatic e`
 * Make the float-out pass spot those calls (instead of spotting the
 `StaticPtr` data constructor) and float them to the top.
 * Make the SPT construction spot those calls, gather them into a table,
 generate a GUID or whatever for each, and allocate a `StaticPtr` data
 consructor for each.

 That way all the magic of building `StaticPtr` constructors is in one
 place.

 Would that work?

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


More information about the ghc-tickets mailing list