Synchronization optimization for statically compiled Java programs is
performed in three phases: Thread closure analysis, Alias analysis, and
Specialization and transformation. Thread closure analysis bounds the
number of thread instances constructed at each thread allocation site, and
determines the set of methods potentially executed by each thread
instance. Alias analysis generates equivalence class representation based
alias signatures for each method. These signatures describe the aliasing
and synchronization behavior of each method. The specialization and
transformation phase traverses a call graph in a top-down manner starting
from the program entry point, and creates specialized copies of methods
when they can be individually optimized. A synchronization operation is
removed from the code whenever it can be proven that all objects reaching
the operation at runtime can be synchronized by at most one thread
instance.
L'ottimizzazione di sincronizzazione per i programmi staticamente compilati del Java è effettuata in tre fasi: Filetti l'analisi della chiusura, altrimenti detto analisi e specializzazione e trasformazione. Filetti i limiti che di analisi della chiusura il numero di casi del filetto ha costruito ad ogni luogo di ripartizione del filetto e determina l'insieme dei metodi potenzialmente eseguiti da ogni caso del filetto. Altrimenti detto l'analisi genera le firme basate rappresentazione equivalente del codice categoria altrimenti detto per ogni metodo. Queste firme descrivono il comportamento di sincronizzazione e di aliasing di ogni metodo. La fase di trasformazione e di specializzazione attraversa un grafico di chiamata in un modo dall'alto in basso a partire dal punto di entrata di programma e genera le copie specializzate dei metodi quando possono essere ottimizzate individualmente. Un funzionamento di sincronizzazione è rimosso dal codice ogni volta che può essere dimostrato che tutti gli oggetti che raggiungono il funzionamento a tempo di esecuzione possono essere sincronizzati vicino tutt'al più un caso del filetto.