Secrets of the Glasgow Haskell Compiler inliner. Higher-order languages such as Haskell encourage the programmer to build abstractions by composing functions. A good compiler must inline many of these calls to recover an efficiently executable program. In principle, inclining is dead simple: just replace the call of a function by an instance of its body. But any compiler-writer will tell you that inclining is a black art, full of delicate compromises that work together to give good performance without unnecessary code bloat. The purpose of this paper is, therefore, to articulate the key lessons we learned from a full-scale “production” inliner, the one used in the Glasgow Haskell compiler. We focus mainly on the algorithmic aspects, but we also provide some indicative measurements to substantiate the importance of various aspects of the inliner.

References in zbMATH (referenced in 58 articles , 1 standard article )

Showing results 1 to 20 of 58.
Sorted by year (citations)

1 2 3 next

  1. Kapfer, Simon: Computing cup products in integral cohomology of Hilbert schemes of points on $K3$ surfaces (2016)
  2. Duck, Gregory J.; Haemmerlé, Rémy; Sulzmann, Martin: On termination, confluence and consistent CHR-based type inference (2014)
  3. Linton, S.; Hammond, K.; Konovalov, A.; Brown, C.; Trinder, P.W.; Loidl, H.-W.; Horn, P.; Roozemond, D.: Easy composition of symbolic computation software using SCSCP: a new Lingua Franca for symbolic computation (2013)
  4. Mainland, Geoffrey; Leshchinskiy, Roman; Peyton Jones, Simon: Exploiting vector instructions with generalized stream fusion (2013)
  5. Petersen, Leaf; Orchard, Dominic; Glew, Neal: Automatic SIMD vectorization for Haskell (2013)
  6. Popeea, Corneliu; Chin, Wei-Ngan: Dual analysis for proving safety and finding bugs (2013)
  7. Weirich, Stephanie; Hsu, Justin; Eisenberg, Richard A.: System FC with explicit kind equality (2013)
  8. Bergstrom, Lars; Reppy, John: Nested data-parallelism on the GPU (2012)
  9. Schilling, Thomas: Challenges for a trace-based just-in-time compiler for Haskell (2012)
  10. Weirich, Stephanie: Dependently-typed programming in GHC (2012)
  11. Liu, Hai; Cheng, Eric; Hudak, Paul: Causal commutative arrows (2011)
  12. Morihata, Akimasa: A short cut to optimal sequences (2011)
  13. Hamana, Makoto: Semantic labelling for proving termination of combinatory reduction systems (2010)
  14. McCreight, Andrew; Chevalier, Tim; Tolmach, Andrew: A certified framework for compiling and executing garbage-collected languages (2010)
  15. Orchard, Dominic; Schrijvers, Tom: Haskell type constraints unleashed (2010)
  16. de la Encina, Alberto; Peña, Ricardo: From natural semantics to C: a formal derivation of two STG machines (2009)
  17. Hoffmann, Guillaume: HTab: a terminating tableaux system for hybrid logic (2009)
  18. McBride, Conor: Clowns to the left of me, jokers to the right (pearl), dissecting data structures (2008)
  19. Peyton Jones, Simon; Leshchinskiy, Roman; Keller, Gabriele; Chakravarty, Manuel M.T.: Harnessing the multicores: nested data parallelism in Haskell (2008)
  20. Sabel, David; Schmidt-Schauss, Manfred: A call-by-need lambda calculus with locally bottom-avoiding choice: context lemma and correctness of transformations (2008)

1 2 3 next