Class SynchronizedBlockDuplicator

java.lang.Object
com.ibm.wala.cast.tree.rewrite.CAstRewriter<CAstRewriter.RewriteContext<com.ibm.wala.cast.java.examples.ast.SynchronizedBlockDuplicator.UnwindKey>,com.ibm.wala.cast.java.examples.ast.SynchronizedBlockDuplicator.UnwindKey>
com.ibm.wala.cast.java.examples.ast.SynchronizedBlockDuplicator

public class SynchronizedBlockDuplicator extends CAstRewriter<CAstRewriter.RewriteContext<com.ibm.wala.cast.java.examples.ast.SynchronizedBlockDuplicator.UnwindKey>,com.ibm.wala.cast.java.examples.ast.SynchronizedBlockDuplicator.UnwindKey>
transforms each synchronized block to execute under a conditional test calling some method m(), where the block is duplicated in both the if and else branches. The transformation enables a static analysis to separately analyze the synchronized block for true and false return values from m().

See "Finding Concurrency-Related Bugs using Random Isolation," Kidd et al., VMCAI'09, Section 3