Baseline wird zusätzlicher JavaScript-Compiler in Firefox

Firefox-Entwickler haben nach 6 Monaten Entwicklungszeit den JavaScript-Compiler Baseline in die Entwicklerversion Nightly gehoben. Dieser soll die beiden Just-In-Time-Compiler JägerMonkey und IonMonkey ergänzen und die Abläufe beschleunigen.

In Pocket speichern vorlesen Druckansicht 82 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Ragni Zlotos

Mehr Zeitersparnis erhoffen sich Mozillas Firefox-Entwickler vom JavaScript-Compiler Baseline, der laut Blogeintrag nach 6 Monaten Entwicklung nun testweise in die Nightly Builds von Firefox übernommen wurde. Der Baseline-Compiler (der keinen eigenen "Monkey"-Codenamen erhielt) soll vor allem die Grundlage für den Just-In-Time-Compiler IonMonkey verbessern. Insgesamt bringt das laut Mozilla für Nightly bei den Benchmarks Kraken, Sunspider und Octane 5 bis 10 Prozent schnellere Verarbeitung von JavaScript.

Auf der Website "Are we fast yet" sieht man, wie sich Chrome und Firefox ein Kopf-an-Kopf-Rennen um die Optimierung von JavaScript liefern.

Die Verarbeitung von JavaScript im Browser Firefox verläuft derzeit arbeitsteilig zwischen einem Interpreter und den beiden Just-In-Time-Kompilatoren JägerMonkey und IonMonkey. Dabei wird der Interpreter das meiste JavaScript verarbeiten, häufig benötigte Funktionen werden jedoch anders behandelt, um zur Ausführungszeit der Skripte Zeit zu sparen. Häufig verwendeter Code wird an den schneller in ausführbaren Code umwandelnden JägerMonkey übergeben. Ist das JavaScript sehr "heiß", wird also viel genutzt, wird der Code noch einmal vom länger kompilierenden, dafür aber optimiertes Kompilat erzeugenden IonMonkey verarbeitet.

Die dabei auftretenden Probleme beschreibt Kannan Vijayan so: Weder JägerMonkey noch IonMonkey konnten Informationen über im JavaScript-Code verwendete Typen sammeln, produzierten aber dennoch JIT-Code, der auf Typinformationen beruhte. Sobald sich das zur Laufzeit änderte, musste der Kompilationsprozess wiederholt werden. Die Zusammenarbeit der beiden Systeme wird dadurch behindert, dass sie unterschiedliche Speicherzugriffmethoden nutzten. Durch Einschränkungen beim Erkennen von Typinformationen kann IonMonkey nur begrenzt optimieren.

Baseline soll genau diese Probleme lösen und Typeninformationen sammeln und bereitstellen. Dadurch werde von Baseline produzierter Code nie ungültig, meint Vijayan. Es teile sich Code mit IonMonkey und sei durch ein einfaches Design leicht zu warten. Baseline könne laut Vijayan sowohl 10 bis 100 mal schneller als der Interpreter bisher agieren, als auch IonMonkeys JIT-Code verbessern. Auf lange Sicht solle Baseline den Interpreter ersetzen und JägerMonkey überflüssig machen, so Entwickler Vijayan. (rzl)