Patent ID: 7536680

Claim:
A computer-implemented method for modifying a class file to monitor data flow, comprising the steps of: interrogating the class file, before performing any modifications, in order to obtain a count of arguments and a type of each argument used by the class file; instrumenting performance monitoring instructions or references into the class file to monitor the performance of the class file, by performing at least the following: inserting into a constant pool for a class, one or more references to a set of methods in an instrumentation class; adding one or more lines of code to report incoming arguments and their type of a method invocation to a selected method, if any, wherein the one or more lines of code to report incoming arguments is inserted at a top of the selected method and argument types include array types; adding one or more lines of code to report return arguments and their type of a method invocation to a selected method, if any, wherein the one or more lines of code to report return arguments is inserted prior to the return point in the method body; and adding one or more lines of code to report entry and exit events to the class; providing an instrumentation class, wherein the instrumentation class defines a plurality of monitoring methods, each monitoring method corresponding to a respective instrumented performance monitoring reference or performance monitoring instruction line of code, for receiving monitoring data; creating an instrumentation interface by instantiating the instrumentation class and wherein the instrumentation interface has a plurality of operations that correspond to the monitoring methods; reporting the monitored data to the instrumentation interface wherein the interface gets control with each indication of an instrumented method invocation, incoming argument and return value; and categorizing, by the instrumentation interface, different types of incoming arguments and return values for the selected method and other performance data, wherein the instrumentation interface sends the performance data to an analysis agent that records at least a count of the argument types and return values and the analysis agent maintains a hash table for one of each unique method, incoming argument, return value and attribute of the selected method based on the performance data such that statistical information is reported.