Фирефок 70 стиже са побољшаним Јавасцрипт тумачем

Фирефок КСНУМКС

Опште је познато да модерне веб апликације покрећу много више ЈаваСцрипт кода него пре неколико година. Иако су састављачи брзо следили тренд и учинили ЈаваСцрипт ефикасним, за Мозиллу се мора применити решење које ће још боље поднети ово оптерећење.

Да бисте то урадили, Мозилла је развила и додала нови интерпретатор бајт кода ЈаваСцрипт свом ЈаваСцрипт механизму за приказивање уграђеном у Фирефок 70. Са Фирефоком 70 који ће бити доступан следећег октобра, Мозилла најављује боље управљање ЈаваСцрипт кодом користећи свој нови тумач кода додан свом ЈаваСцрипт механизму.

Да би се постигао овај циљ, Мозилла то објашњава У модерним ЈаваСцрипт механизмима, свака функција се у почетку извршава у интерпретатору кода.

Функције које се називају пуно компајлирају се у изворни машински код. То се назива ЈИТ компилација или компилација у лету. Што се тиче Фирефок такође укључује тумач ЈаваСцрипт кода написан на Ц ++ и различите нивое ЈИТ компилације.

Прво, имамо основни ЈИТ компајлер који компајлира сваку изјаву бајт кода директно у мали комад машинског кода користећи уграђено кеширање како за перформансе, тако и за прикупљање информација за ЈИТ компајлер зван ИонМонкеи или Ион.

Заузврат, компајлер ИонМонкеи користи напредне оптимизације за генерисање брзог кода за критичне опције.

Треба имати на уму да када се функција која се већ компајлира позове са новом врстом аргумента, код функције може бити „деоптимизиран“ и испуштен. У овом случају, извршење се наставља у основном коду до следеће јонске изградње.

Иако је овај процес тумачења ЈаваСцрипт кода до сада добро функционисао, тим на Фирефок објашњава да је први наишао на неке проблеме део коју чине тумач Ц ++ и основни ЈИТ компајлер.

Фирефок КСНУМКС

У ствари, неке савремене веб апликације попут Гоогле докумената или Гмаил-а покренути толико ЈаваСцрипт-а да компајлер басе, па чак и ЈИТ компајлер могли би дуго да покушавају да саставе хиљаде функција.

Такође, тумач Ц ++ био је врло спор и не прикупља информације о типу, одлажући основну компилацију. Једно решење би било извлачење из нити, али то би представљало ризик од перформанси.

Да би решили ове проблеме, људи из Мозиле коментаришу да:

Основни тумач је између тумача Ц ++ и основног ЈИТ компајлера и садржи елементе оба нивоа.

Извршава све наредбе бајт-кода помоћу фиксне петље тумача (попут тумача Ц ++) и користи технике уграђеног предмеморирања за побољшање перформанси и прикупљање информација о типу (као што то чини основни ЈИТ).

Генерисање преводиоца није нова идеја. Али Фирефоков тим овде истиче да су пронашли нови начин да то учине поновном употребом већине основног ЈИТ кода компајлера. Основни ЈИТ компајлер је ЈИТ модел, што значи да се свака средња инструкција кода компајлира у суштински фиксни низ машинских инструкција који се затим предлажу у петљи интерпретације.

Такође, од Програмери Фирефок-а желели су да основни тумач користи потпуно исте мрежне кеш меморије и исте информације као и ЈИТ, додата је нова структура података која се зове ЈитСцрипт.

ЈитСцрипт садржи све информације о типу и структуре података уграђеног предмеморирања које користе основни тумачи и ЈИТ компајлер.

Са овим новим имплементацијама, основни подаци компајлера за функцију сада су само у машинском коду. Одатле су све кеширане информације и подаци о профилисању премештени у ЈитСцрипт.

С друге стране, будући да су основни тумач и ЈИТ компајлер идентични, већи део генерисаног кода такође може да се дели.

Да би се то урадило, креирана је основна класа под називом БаселинеЦодеГен са још 2 изведене класе. Основни компајлер користи прву класу БалинеЦомпилер за компајлирање бајткода скрипте у машински код.

Друга класа БаселинеИнтерпретерГенератор користи се за генерисање кода за основни тумач. А са класом БаселинеИнтерпретерГенератор, Фирефок тим је успео да направи основни тумач.

izvor: https://hacks.mozilla.org/


Оставите свој коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. За податке одговоран: Мигуел Ангел Гатон
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.