Was ist Escape Analyse?
Der GHC nutzt nicht-escapende, nicht-wiederkehrende Funktionen ("Join Points") in seinen Optimierungen aus, indem er Aufrufe zu einem Sprung und einer Anpassung des Stack Pointers übersetzt. Außerdem können Join Points die umgebende Heap-Closure wiederverwenden, oder zumindest die Closure auf dem Stack ablegen.
Für nicht-escapende, aber wiederkehrende Funktionen kann man ebenfalls die umgebende Closure wiederverwenden. Ebenfalls könnten beliebige andere Heap-Objekte auf dem Stack abgelegt werden, was Overhead durch den Garbage Collector spart. Der GHC nutzt keines der beiden Szenarien aus.
Aufgabe:
In dieser Arbeit soll der GHC um eine Escape Analyse erweitert werden, deren Ergebnisse in der Codegeneration durch Allokation von nicht-escapenden Heap-Objekten auf dem Stack ausgenutzt werden soll.
Voraussetzungen
Gute Haskell-KenntnisseSchlüsselworte
Haskell, GHC, Compiler, Escape Analyse Veröffentlichungen
Veröffentlichung |
Escape Analysis for the Glasgow Haskell Compiler |
Betreuer
Wissenschaftliche Mitarbeiter |
---|
Sebastian Graf |
Studenten
Studenten |
---|
Sebastian Scheper |