LLVM Code Generation in HHVM

HHVM, ursprungligen designat utan LLVM på grund av PHP:s dynamiska natur och fokus på snabb uppstart, har nu framgångsrikt integrerat LLVM för kodgenerering efter att ha identifierat ytterligare prestandavinster. Integrationen krävde betydande ändringar i HHVM:s interna strukturer, inklusive en omarbetning av hur PHP-funktionsanrop hanteras och en generalisering av VASM för att abstrahera bort x86-specifika instruktioner. LLVM modifierades för att stödja HHVM:s unika krav, såsom "location records" för kodintrospektion, "smashable calls" för säker kodmodifiering i realtid, och anpassningar för HHVM:s anpassade ABI och stackhantering. Målet med integrationen var att utnyttja LLVM:s optimeringsförmåga för att ytterligare förbättra HHVM:s prestanda, efter att tidigare interna optimeringar redan nästan fyrdubblat prestandan.