Vi föreslår en ny språkneutral primitiv för LLVM-kompilatorn, som ger effektiv kontextväxling och meddelande som går mellan lätta trådar av kontroll. Den primitiva, kallas SWAPSTAK, kan användas av alla språk implementering baserad på LLVM för att bygga högre nivå språkstrukturer såsom fortsättningar, koroutiner, och lätta trådar. Som en del av att lägga till primitiva till LLVM har vi också lagt till kompilatorstöd för att passera parametrar över sammanhangsbrytare. Vår modifierade LLVM-kompilator producerar mycket effektiv kod genom en kombination av att exponera den sammanhangsberoende kopplingskoden för befintliga kompilatoroptimeringar och lägga till nya kompilatoroptimeringar för att ytterligare minska kostnaden för sammanhangsbrytare. För att demonstrera generaliteten och effektiviteten hos våra primitiva, lägger vi till en-shot fortsättningar till C++, och ger ett enkelt fiberbibliotek som tillåter miljontals fibrer att köras på flera kärnor, med en arbets-stjälande schemaläggare och snabb inter-fiber sykronisering. Vi hävdar att kompilatorstödda lätta sammanhangsbyte kan vara betydligt snabbare än att använda ett bibliotek för att växla mellan sammanhang, och ge experimentella bevis för att stödja positionen.
Dolan m.fl. föreslog SWAPSTAK mekanism för LLVM för att möjliggöra lätt sammanhangsbyte REF.
Compiler support for lightweight context switching
{'venue': 'TACO', 'journal': None, 'mag_field_of_study': ['Computer Science']}