TY - GEN
T1 - HEAT
T2 - 2009 33rd Annual IEEE International Computer Software and Applications Conference, COMPSAC 2009
AU - Chen, Qichang
AU - Wang, Liqiang
AU - Yang, Zijiang
PY - 2009
Y1 - 2009
N2 - Thread escape analysis, which determines whether and when a variable becomes shared by multiple threads, is a foundation for many other program analyses. Most existing escape analysis tools are either purely dynamic or static. Static analysis, which considers all possible behaviors of a program, may produce false positives; whereas dynamic approaches cannot analyze unobserved behaviors of a program. This paper presents a hybrid approach that integrates static and dynamic analyses to address this problem. We first perform static analysis to obtain succinct summaries of program source code. Dynamic analysis is then used to confirm variable sharing; for unexecuted code, we determine the sharing of variables by performing an interprocedural synthesis based on the runtime information and static summaries. Compared to dynamic analysis, the hybrid approach is able to determine the escape property of variables in unexecuted code. Compared to static analysis, the hybrid approach produces fewer false alarms. We implemented this hybrid escape analysis in Java. Our experiments on several benchmarks and real-world applications show that the hybrid approach improves accuracy of escape analysis compared to existing approaches and significantly reduces overhead of subsequent program analyses.
AB - Thread escape analysis, which determines whether and when a variable becomes shared by multiple threads, is a foundation for many other program analyses. Most existing escape analysis tools are either purely dynamic or static. Static analysis, which considers all possible behaviors of a program, may produce false positives; whereas dynamic approaches cannot analyze unobserved behaviors of a program. This paper presents a hybrid approach that integrates static and dynamic analyses to address this problem. We first perform static analysis to obtain succinct summaries of program source code. Dynamic analysis is then used to confirm variable sharing; for unexecuted code, we determine the sharing of variables by performing an interprocedural synthesis based on the runtime information and static summaries. Compared to dynamic analysis, the hybrid approach is able to determine the escape property of variables in unexecuted code. Compared to static analysis, the hybrid approach produces fewer false alarms. We implemented this hybrid escape analysis in Java. Our experiments on several benchmarks and real-world applications show that the hybrid approach improves accuracy of escape analysis compared to existing approaches and significantly reduces overhead of subsequent program analyses.
UR - https://www.scopus.com/pages/publications/70449632768
U2 - 10.1109/COMPSAC.2009.28
DO - 10.1109/COMPSAC.2009.28
M3 - 会议稿件
AN - SCOPUS:70449632768
SN - 9780769537269
T3 - Proceedings - International Computer Software and Applications Conference
SP - 142
EP - 147
BT - Proceedings - 2009 33rd Annual IEEE International Computer Software and Applications Conference, COMPSAC 2009
Y2 - 20 July 2009 through 24 July 2009
ER -