[GHC] #3693: Show stack traces

GHC ghc-devs at haskell.org
Thu Mar 13 18:22:16 UTC 2014


#3693: Show stack traces
-------------------------------------+------------------------------------
        Reporter:  jpet              |            Owner:  Tarrasch
            Type:  feature request   |           Status:  new
        Priority:  normal            |        Milestone:  7.10.1
       Component:  Runtime System    |          Version:  6.10.4
      Resolution:                    |         Keywords:
Operating System:  Unknown/Multiple  |     Architecture:  Unknown/Multiple
 Type of failure:  None/Unknown      |       Difficulty:  Unknown
       Test Case:                    |       Blocked By:
        Blocking:                    |  Related Tickets:
-------------------------------------+------------------------------------

Comment (by scpmw):

 Okay, I have now submitted an (hopefully) improved version:

 https://github.com/scpmw/ghc/pull/6

 The main new idea is that instead of `tickishScoped`+`tickishSoftScope`
 and `tickishIgnoreCheap` respectively we now have two main tickish
 properties:

 - Scoping
 ([https://github.com/scpmw/ghc/commit/0798888f829fe527b7c03f7d73b1d04746183b64
 #diff-90615b0b9a679ebb599d2cb8b2c0dcdeR519 Source]): Determines what
 transformations are allowed with respect to covered code. The three levels
 are `NoScope` for don't-care (= HPC ticks), `SoftScope` for no-float-out
 and `CostCentreScope` for no-float-out plus no-float-in modulo lambdas.

 - Placement
 ([https://github.com/scpmw/ghc/commit/0798888f829fe527b7c03f7d73b1d04746183b64
 #diff-90615b0b9a679ebb599d2cb8b2c0dcdeR648 Source]): It occurred to me
 that `mkTick` has a very similar problem with characterising where to
 create ticks / what to automatically push them through. So I did basically
 the same thing - the three levels here are `PlaceRuntime` which basically
 floats through just type applications and casts, `PlaceNonLam` which
 additionally floats through lambdas, and `PlaceCostCentre` which again
 implements all the CC-specific rules (such as eliminating ticks on HNFs).

 Note that the difference between `PlaceRuntime` and `PlaceNonLam` is
 essentially `tickishCounts`. However, it's actually easier this way, as it
 allows `mkTick` to do its work without having to care about
 `tickishCounts` at all
 ([https://github.com/scpmw/ghc/commit/0798888f829fe527b7c03f7d73b1d04746183b64
 #diff-3ff04cec4ec4aff71838022111551fb8R232 Source]).

 Furthermore I tried to update all documentation and add more comments all
 around. What is the last verdict on a Wiki page? Sorry if I'm a bit
 reluctant about this, but I can't think of anything offhand that I would
 want to put on a Wiki instead of into a code comment. Some more examples,
 possibly?

 Btw: A non-paywall link to the paper is
 http://eprints.whiterose.ac.uk/76448/

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


More information about the ghc-tickets mailing list