Abstrakt. Interprocedural analyser såsom sidoeffekt analys kan ge information användbar för att utföra aggressiva optimeringar. Vi presenterar en studie av om bieffektinformation förbättrar prestandan hos just-in-time-kompilatorer (JIT), och i så fall vilken nivå av analysprecision som krävs. Vi använde SPARK, den inter-procedural analyskomponenten i SOOT Java analys och optimering ram, för att beräkna sidoeffekt information och koda den i klassfiler. Vi modifierade Jikes RVM, en forskning JIT, för att använda sig av sidoeffektanalys i lokal gemensam sub-expression eliminering, hög SSA, redundant laddning eliminering och loop-invariant kod rörelse. På SpecJVM98-riktmärkena mätte vi det statiska antalet minnesoperationer som tagits bort, de dynamiska antalet minnesavläsningar eliminerades och exekveringstiden. Våra resultat visar att användningen av sidoeffektanalys ökar antalet statiska möjligheter att eliminera belastningen med upp till 98%, och minskar dynamiska fältläsningsinstruktioner med upp till 27%. Information om biverkningar gjorde det möjligt att öka hastigheten i intervallet 1,08x till 1,20x för vissa referensvärden. Slutligen, bland de olika nivåerna av precision av bieffekt information, är en enkel bieffekt analys vanligtvis tillräcklig för att få de flesta av dessa hastigheter.
I REF används en interprocedural pointer-analys för att härleda information om biverkningar för användning i Jikes RVM.
Using inter-procedural side-effect information in JIT optimizations
{'venue': 'In 14th International Conference on Compiler Construction (CC). LNCS', 'journal': None, 'mag_field_of_study': ['Computer Science']}