On the prevalence of indirect function calls in middleware software systems

An empirical study investigating the pervasiveness and distribution of indirect function calls via function pointers and virtual methods in middleware software systems is presented. The study encompasses a broad gamut of software systems that range from high-performance, distributed real-time embedded systems, to fully-featured professional 3D game engines; comprising in aggregate nearly five million lines of code and nine software systems. The systems were inter-procedurally statically examined to determine the distribution of function pointers and virtual method calls; function pointers were further segregated by type and complexity. Results indicate that function pointers are typically utilized in situations that make static analysis costly and impractical to conduct. A five-year analysis of archived data shows an increase in the usage of both calls using function pointers and virtual methods over the lifetime of open-source middleware systems, thus posing additional obstacles for inter-procedural analysis.