Firefox 70 dorazí s vylepšeným interpretom Javascript

Firefox 70

Je všeobecne známe, že moderné webové aplikácie používajú oveľa viac kódu JavaScript ako pred pár rokmi. Aj keď zostavovatelia rýchlo nasledovali trend a zefektívnili JavaScript, pre Mozillu musí byť implementované riešenie, ktoré zvládne túto záťaž ešte lepšie.

Ak to chcete urobiť, Mozilla vyvinula a pridala nového tlmočníka bytových kódov JavaScript k jeho vykresľovaciemu modulu JavaScript zabudovanému do prehliadača Firefox 70. Keď bude Firefox 70 k dispozícii budúci október, Mozilla ohlasuje lepšiu správu kódov JavaScript pomocou nového tlmočníka kódu, ktorý je pridaný do jeho nástroja JavaScript.

Na dosiahnutie tohto cieľa Mozilla to vysvetľuje V moderných motoroch JavaScriptu sa každá funkcia spočiatku vykonáva v interprete kódu.

Funkcie, ktoré sa nazývajú veľa, sa kompilujú do natívneho strojového kódu. Toto sa nazýva kompilácia JIT alebo kompilácia za chodu. Čo sa týka Firefox tiež obsahuje interpret kódu JavaScript napísaný v C ++ a rôzne úrovne kompilácie JIT.

Najskôr máme základný kompilátor JIT, ktorý kompiluje každý príkaz bytecode priamo do malého strojového kódu pomocou vloženého ukladania do pamäte cache pre výkon a zhromažďovanie informácií pre kompilátor JIT s názvom IonMonkey alebo Ion.

Kompilátor IonMonkey zase používa pokročilé optimalizácie na generovanie rýchleho kódu pre kritické možnosti.

Je potrebné poznamenať, že keď sa funkcia, ktorá sa už kompiluje, volá s novým typom argumentu, kód funkcie sa dá „deoptimalizovať“ a zahodiť. V tomto prípade pokračuje vykonávanie v základnom kóde až do ďalšieho zostavenia Ion.

Aj keď tento proces interpretácie kódu JavaScript doteraz fungoval celkom dobre, tím v Firefox vysvetľuje, že pri prvom došlo k problémom časť tvorený tlmočníkom C ++ a základným kompilátorom JIT.

Firefox 70

V skutočnosti niektoré moderné webové aplikácie napríklad Dokumenty Google alebo Gmail spustiť toľko JavaScriptu, že kompilátor základ a dokonca aj kompilátor JIT mohli by dlho stráviť pokusom o zostavenie tisícov funkcií.

Tlmočník C ++ bol tiež veľmi pomalý a nezhromažďoval informácie o typoch, čo zdržalo základnú kompiláciu. Jedným z riešení by bolo vytiahnutie vlákna, ale to by bolo riziko výkonu.

Na vyriešenie týchto problémov ľudia v Mozille poznamenávajú, že:

Základný tlmočník je medzi tlmočníkom C ++ a základným kompilátorom JIT a obsahuje prvky oboch úrovní.

Vykonáva všetky príkazy bytecode s pevnou slučkou tlmočníka (napríklad tlmočník C ++) a na zvýšenie výkonu a zhromažďovanie informácií o type používa techniky priameho ukladania do medzipamäte (ako to robí základný JIT).

Generovanie tlmočníka nie je nový nápad. Tím Firefoxu tu však poukazuje na to, že našiel nový spôsob, ako to urobiť, a to opätovným použitím väčšiny základného kódu kompilátora JIT. Základným kompilátorom JIT je model JIT, čo znamená, že každá inštrukcia prostredného kódu je kompilovaná do v podstate pevnej postupnosti strojových pokynov, ktoré sú potom navrhnuté v interpretačnej slučke.

Tiež od r Vývojári prehliadača Firefox chceli, aby základný tlmočník používal úplne rovnaké online kešky a rovnaké informácie ako JIT, bola pridaná nová dátová štruktúra s názvom JitScript.

JitScript obsahuje všetky informácie o typoch a vložené dátové štruktúry ukladania do medzipamäte používané základnými interpretmi a kompilátorom JIT.

S týmito novými implementáciami sú základné údaje kompilátora pre funkciu teraz iba v strojovom kóde. Odtiaľ boli všetky informácie z medzipamäte a profilové údaje presunuté do JitScript.

Na druhej strane, pretože základný tlmočník a kompilátor JIT sú totožné, možno veľkú časť vygenerovaného kódu tiež zdieľať.

Za týmto účelom bola vytvorená základná trieda s názvom BaselineCodeGen s 2 ďalšími odvodenými triedami. Základný kompilátor používa prvú triedu BalineCompiler na kompiláciu bytecode skriptu do strojového kódu.

Druhá trieda BaselineInterpreterGenerator sa používa na generovanie kódu pre základný tlmočník. A s triedou BaselineInterpreterGenerator sa tímu Firefoxu podarilo zostaviť základného tlmočníka.

Fuente: https://hacks.mozilla.org/


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.