J.M. Siskind's research statement stanowi:Inne odniesienia do brutalnego optymalizowania kompilatora Stalina?
Stalin jest kompilatora na schemacie, który wykonuje całego programu analizy statycznej i wykorzystuje wynik tej analizy generuje bardzo wydajnego kodu. Stalin wykorzystuje duży zbiór technik analizy statycznej. Wykonuje nowatorską formę analizy przepływu wielowariantowego, która wykorzystuje iteracyjną analizę przepływu monowariantowego w celu wykonywania rozdzielania strumieniowego: klonowanie wyspecjalizowanych kopii procedur i przypisywanie docelowych obiektów do takich klonów za miejsce wywołania. Wykorzystuje wyniki analizy przepływu do wykonywania analiz w czasie życia, analizy ucieczki, analizy punktów i analizy aliasów. Analizy te wspierają nową formę lekkiej konwersji zamknięć, która eliminuje większość szczelin zamykających, wykorzystując takie techniki, jak zmienna globalizacja i lokalizacja, kompresuje statyczny backchain i zwykle eliminuje większość zamknięć programów. Wykorzystuje również powyższe analizy do obsługi ukierunkowanego na przepływ zarządzania pamięcią w oparciu o region, w którym to procesie wyrzucanie elementów do pamięci jest zastępowane statyczną alokacją i dealokacją na podstawie wartości abstrakcyjnej i na podstawie programu. Wykonuje również ukierunkowaną na strumień, lekką konwersję CPS, wykorzystując rozszerzenia technik pionierskich w Screamer, aby wspierać ekstremalnie efektywne kontynuacje pierwszej klasy. Na koniec obsługuje on opcję bezpośredniego wyświetlania i wyboru reprezentacji niskiego poziomu, aby wybrać implementację (lub brak implementacji) znaczników, sprawdzanie znaczników i wysyłanie znaczników na podstawie wartości abstrakcyjnej i punktu programowego. Eliminuje to większość tagów czasu pracy, sprawdzanie tagów, tagowanie, usuwanie tagów, wysyłanie tagów, boksowanie i rozpakowywanie z programów. Te analizy i optymalizacje umożliwiają Stalinowi generowanie niezwykle wydajnego kodu, który przewyższa wszystkie inne kompilatory schematów o współczynniki od dwóch do stu, szczególnie w przypadku kodu liczbowo intensywnego. Stalin często generuje kod, który przewyższa odręczny kod c i Fortran.
udało mi się znaleźć następujące bardzo interesujący papieru na zamknięciach/funkcja zwraca realizacji: Flow-Directed Lightweight Closure Conversion. Ja również e-mail do autora z prośbą o dokumenty na inne tematy, które są wymienione jako być napisane w gazecie konwersji Zamknięcie:
Siskind, J. M. 2000a. Płynna, lekka konwersja CPS. W przygotowaniu.
Siskind, J. M. 2000b. Poliwariancja ukierunkowana na przepływ. W przygotowaniu.
Siskind, J. M. 2000c. Wybór reprezentacji ukierunkowanej na przepływ. W przygotowaniu.
Siskind, J. M. 2000d. Zarządzanie magazynem ukierunkowane na przepływ. W przygotowaniu
Niestety, nigdy nie pisał tych dokumentów. Moje pytanie brzmi: czy istnieją jakieś alternatywne lub powiązane artykuły, które obejmują te tematy? Jestem bardzo zainteresowany nauczeniem się, w jaki sposób Stalin (lub inne kompilatory) może skompilować tak wysoki poziom języka, jak Schemat, który jest zbiorem śmieci, dynamicznie wpisany, obsługuje funkcje pierwszej klasy, a nawet pierwszej klasy kontynuacji, może być statycznie skompilowany do tak wydajnego kodu .
Zastanawiam się, dlaczego tu są bliskie głosy? –
Może niektórzy myślą, że to żart z powodu tytułu? Bardziej prawdopodobne, że uważają to za zbyt teoretyczne. Nie zgadzam się. –
Prawdopodobnie dlatego, że pytanie jest lepiej dostosowane do zmiany stosu cstheory. – erjiang