Article

Interprocedural side-effect analysis for incomplete object-oriented software modules

Programming Languages and Compilers Group, School of Computer Science and Engineering, University of New South Wales, NSW 2032, Sydney, Australia
Journal of Systems and Software 01/2007; DOI:10.1016/j.jss.2006.06.015 pp.92-105
Source: DBLP

ABSTRACT We introduce a new approach to computing interprocedural modification side effects for part of an object-oriented program (e.g., components, libraries or client modules). Our approach consists of first performing a whole-program points-to analysis to such an incomplete program and then applying a so-called mutability analysis (MA) to determine which objects in the program are mutable by unknown code and which references and call sites in the program are complete (since their points-to sets and target methods are statically resolvable). Based on these results, we present a new MA-based interprocedural side-effect analysis for computing the modification side-effects for an incomplete program. Our experimental results show that our mutability analysis enables a variety of pure methods to be detected, yielding the purity information useful in program understanding and debugging. In addition, our MA-based side-effect analysis enables more redundant loads to be removed than a recent TBAA-based PRE algorithm guided by type-based alias analysis (TBAA). Our approach is simple since it is flow-insensitive and achieves these improvements at small costs.

0 0
 · 
0 Bookmarks
 · 
11 Views

Keywords

experimental results
 
incomplete program
 
interprocedural modification side effects
 
MA-based side-effect analysis enables
 
modification side-effects
 
mutability analysis enables
 
new MA-based interprocedural side-effect analysis
 
object-oriented program
 
points-to sets
 
program understanding
 
pure methods
 
purity information useful
 
recent TBAA-based PRE algorithm
 
redundant loads
 
small costs
 
so-called mutability analysis
 
target methods
 
type-based alias analysis
 
unknown code
 
whole-program points-to analysis