Zum Hauptinhalt Zur Navigation

Compiler-Infrastruktur: "Javascript-Backend zeigt die Vorteile LLVMs"

Das neue Javascript-Backend für Webkit demonstriere die Vorteile des LLVM -Designs, schreibt Andrew Trick im LLVM-Blog. Die Technik könnte zu einer weiteren Verbreitung und Verbesserung des gesamten LLVM-Projekts beitragen.
/ Sebastian Grüner
1 Kommentare News folgen (öffnet im neuen Fenster)
Webkits FTL zeigt viele noch bestehende Probleme in LLVM auf. (Bild: LLVM)
Webkits FTL zeigt viele noch bestehende Probleme in LLVM auf. Bild: LLVM

Seit etwas mehr als zwei Monaten ist die neue Javascript-Engine FTL in Webkit verfügbar. Dies sei ein "herausragender Meilenstein für die LLVM-Community" , schreibt Entwickler Andrew Trick im offiziellen Projekt-Blog(öffnet im neuen Fenster) . FTL steht für Fourth Tier LLVM, denn die neue Engine JIT-kompiliert Javascript mittels LLVM, um Javascript in Webkit zu verarbeiten.

Diese Technik sei der Beweis dafür, dass "LLVM benutzt werden kann, um dynamische typisierte Sprachen in einer produktiven Umgebung zu beschleunigen." Das allein sei schon ein gewaltiger Erfolgt und zeige "die Vorteile des sehr modularen und flexiblen Designs von LLVM."

Darüber hinaus werde mit FTL erstmals die LLVM-Infrastruktur für sich selbst modifizierenden Programmcode verwendet und Profil-Informationen würden erstmals innerhalb von LLVM-JIT benutzt. Diese Neuerungen könnten zu einer weiteren Verbesserung und einer stärkeren Verbreitung der gesamten Infrastruktur beitragen.

Aufgedeckte Probleme

Trick ist deshalb so zuversichtlich, weil für die Erstellung von FTL "clevere technische Tricks" hätten angewendet werden müssen, um gefundene Probleme zu umgehen. So nutze LLVM global initialisierte Variablen, die Destruktoren beim Beenden des Programmes benötigten. Bei Anwendungen mit mehreren Threads könne dies allerdings zu Abstürzen führen.

Zudem benötige das dynamische Linken der Bibliotheken zu viel Zeit, weil statische Initialisierungen oder Tabellen virtueller Methoden(öffnet im neuen Fenster) benutzt würden. Außerdem seien die Bibliotheken viel zu groß und die exportierten Methoden müssten klar beschränkt werden. Auch die Optimierungen und die Effizienz der Codegenerierung ließen sich noch deutlich verbessern. Davon könnten sowohl statische als auch JIT-Compiler gleichermaßen profitieren.

Die Beseitigung der Fehler und die Umsetzung der genannten Verbesserungen werden das LLVM-Projekt als Ganzes voranbringen, ist sich Trick sicher.


Relevante Themen