A method for analyzing a program is provided. The method includes,
determining an object type that may exist at an execution point of the
program, wherein this enables determination of possible virtual functions
that may be called; creating a call graph at a main entry point of the
program; and recording an outgoing function call within a main function.
The method also includes analyzing possible object types that may occur
at any given instruction from any call path for virtual calls, wherein
possible object types are determined by tracking object types as they
pass through plural constructs; and calling into functions generically
for handling specialized native runtime type information.