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 78 articles , 1 standard article )

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

1 2 3 4 next

  1. Ahn, Ki Yung; Vezzosi, Andrea: Executable relational specifications of polymorphic type systems using Prolog (2016)
  2. Berthold, Jost; Loidl, Hans-Wolfgang; Hammond, Kevin: PAEAN: portable and scalable runtime support for parallel Haskell dialects (2016)
  3. Breitner, Joachim; Eisenberg, Richard A.; Peyton Jones, Simon; Weirich, Stephanie: Safe zero-cost coercions for Haskell (2016)
  4. Downen, Paul; Maurer, Luke; Ariola, Zena M.; Peyton Jones, Simon: Sequent calculus as a compiler intermediate language (2016)
  5. Kapfer, Simon: Computing cup products in integral cohomology of Hilbert schemes of points on $K3$ surfaces (2016)
  6. Sivaramakrishnan, K.C.; Harris, Tim; Marlow, Simon; Peyton Jones, Simon: Composable scheduler activations for Haskell (2016)
  7. Newton, Ryan R.; Fogg, Peter P.; Varamesh, Ali: Adaptive lock-free maps: purely-functional to scalable (2015)
  8. Yang, Edward Z.; Campagna, Giovanni; Ağacan, Ömer S.; El-Hassany, Ahmed; Kulkarni, Abhishek; Newton, Ryan R.: Efficient communication and collection with compact normal forms (2015)
  9. Duck, Gregory J.; Haemmerlé, Rémy; Sulzmann, Martin: On termination, confluence and consistent CHR-based type inference (2014)
  10. 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)
  11. Mainland, Geoffrey; Leshchinskiy, Roman; Peyton Jones, Simon: Exploiting vector instructions with generalized stream fusion (2013)
  12. Petersen, Leaf; Orchard, Dominic; Glew, Neal: Automatic SIMD vectorization for Haskell (2013)
  13. Popeea, Corneliu; Chin, Wei-Ngan: Dual analysis for proving safety and finding bugs (2013)
  14. Weirich, Stephanie; Hsu, Justin; Eisenberg, Richard A.: System FC with explicit kind equality (2013)
  15. Axelsson, Emil; Sheeran, Mary: Feldspar: Application and implementation (2012) ioport
  16. Bergstrom, Lars; Reppy, John: Nested data-parallelism on the GPU (2012)
  17. Schilling, Thomas: Constraint-free type error slicing (2012) ioport
  18. Schilling, Thomas: Challenges for a trace-based just-in-time compiler for Haskell (2012) ioport
  19. Vytiniotis, Dimitrios; Peyton Jones, Simon; Magalhães, José Pedro: Equality proofs and deferred type errors, a compiler pearl (2012) ioport
  20. Weirich, Stephanie: Dependently-typed programming in GHC (2012) ioport

1 2 3 4 next