Registration method for supporting bytecode modification
Abstract
A method is described that comprises receiving from a classfile registration information. The registration information comprises a class name and a different method name for each of the class's methods. Each of the methods are modified with at least one additional byte code instruction to cause, for its respective method, a plug-in module's handler method to provide output function treatment for the respective method. Also, a plug-in pattern is referred to in order to determine which of a plurality of plug-in modules are appropriate for each of the class's methods. The plug-in pattern lists for each of the plug-in modules those of the methods that are to be handled with its corresponding output function treatment.
Claims
exact text as granted — not AI-modified1 . A method, comprising:
a) modifying a first method's bytecode instructions, before said method's classfile has begun to be loaded for processing during runtime, by:
inserting first additional bytecode instructions in a location that is executed if an entry point of said first method is reached during execution of said first method;
inserting second additional bytecode instructions in a location that is executed if a specific exit point of said first method is reached during execution of said first method; and,
performing the following during runtime: b) executing said first method's modified bytecode instructions to perform the following:
invoking a second method with said first additional bytecode instructions, said second method belonging to a class that maintains a dictionary, said dictionary having a listing that correlates said first method to a plug-in module, said invoking including passing said first method's class name, method name, and argument types to said second method;
c) invoking said plug-in module, said plug-in module having a third method and executing said third method to provide a first output for said first method; d) invoking said second method with said second additional bytecode instructions; and e) invoking said plug-in module and executing said third method to provide a second output for said first method.
2 . The method of claim 1 wherein said first output is an entry time for said first method.
3 . The method of claim 1 wherein said second output is an exit time for said first method.
4 . The method of claim 1 wherein said first output is a counter value maintained for said first method.
5 . The method of claim 1 wherein said first output is an input parameter value of said first method.
6 . The method of claim 1 wherein said second output is a returned value of said first method.
7 . The method of claim 1 wherein said first method is a constructor method.
8 . The method of claim 1 wherein said executing further comprises creating, as a consequence of said first additional byte code instructions being executed, an object having an input parameter value of said first method.
9 . The method of claim 1 wherein said dictionary identifies an address where said plug-in module can be found.
10 . The method of claim 1 wherein said modifying further comprises inserting third additional bytecode instructions in a location that is executed only if a failure arises during execution of said first method.
11 . The method of claim 10 further comprising executing said third additional bytecode instructions because a failure occurred during said executing of said first method's byte modified bytecode instructions.
12 . The method of claim 11 wherein said executing said third additional bytecode instructions further comprises raising a generic error condition.
13 . A machine readable medium containing instructions which when executed cause a method to be performed, said method comprising:
a) modifying a first method's bytecode instructions, before said method's classfile has begun to be loaded for processing during runtime, by:
inserting first additional bytecode instructions in a location that is executed if an entry point of said first method is reached during execution of said first method;
inserting second additional bytecode instructions in a location that is executed if a specific exit point of said first method is reached during execution of said first method; and,
performing the following during runtime: b) commencing a runtime phase to cause said first method's modified bytecode instructions to be executed so as to perform the following:
invoking a second method with said first additional bytecode instructions, said second method belonging to a class that maintains a dictionary, said dictionary having a listing that correlates said first method to a plug-in module, said invoking including passing said first method's class name, method name, and argument types to said second method;
c) invoking said plug-in module, said plug-in module having a third method and executing said third method to provide a first output for said first method; d) invoking said second method with said second additional bytecode instructions; and e) invoking said plug-in module and executing said third method to provide a second output for said first method.
14 . The machine readable medium of claim 13 wherein said first output is an entry time for said first method.
15 . The machine readable medium of claim 13 wherein said second output is an exit time for said first method.
16 . The machine readable medium of claim 13 wherein said first output is a counter value maintained for said first method.
17 . The machine readable medium of claim 13 wherein said first output is an input parameter value of said first method.
18 . The machine readable medium of claim 13 wherein said second output is a returned value of said first method.
19 . The machine readable medium of claim 13 wherein said first method is a constructor.
20 . The machine readable medium of claim 13 wherein said method further comprises creating an object having an input parameter value of said first method during said runtime phase.
21 . The machine readable medium of claim 13 wherein said dictionary identifies an address where said plug-in module can be found.
22 . The machine readable medium of claim 13 wherein said modifying further comprises inserting third additional bytecode instructions in a location that is executed only if a failure arises during execution of said first method.
23 . The machine readable medium of claim 22 wherein said third additional bytecode instructions are executed during said runtime phase only if a failure occurs during said execution of said first method's byte modified bytecode instructions during said runtime phase.
24 . The machine readable medium of claim 23 wherein execution of said third additional bytecode instructions causes a generic error condition to be raised.
25 . A computing system implemented with a machine readable medium containing instructions which when executed cause a method to be performed, said method comprising:
a) modifying a first method's bytecode instructions, before said method's classfile has begun to be loaded for processing during runtime, by:
inserting first additional bytecode instructions in a location that is executed if an entry point of said first method is reached during execution of said first method;
inserting second additional bytecode instructions in a location that is executed if a specific exit point of said first method is reached during execution of said first method; and,
performing the following during runtime: b) executing said first method's modified bytecode instructions during a runtime phase so as to perform the following:
invoking a second method with said first additional bytecode instructions, said second method belonging to a class that maintains a dictionary, said dictionary having a listing that correlates said first method to a plug-in module, said invoking including passing said first method's class name, method name, and argument types to said second method;
c) invoking said plug-in module, said plug-in module having a third method and executing said third method to provide a first output for said first method; d) invoking said second method with said second additional bytecode instructions; and e) invoking said plug-in module and executing said third method to provide a second output for said first method.
26 . The computing system of claim 25 wherein said first output is an entry time for said first method.
27 . The computing system of claim 25 wherein said second output is an exit time for said first method.
28 . The computing system of claim 25 wherein said first output is a counter value maintained for said first method.
29 . The computing system of claim 25 wherein said first output is an input parameter value of said first method.
30 . The computing system of claim 25 wherein said second output is a returned value of said first method.
31 . The computing system of claim 25 wherein said first method is a constructor.
32 . The computing system of claim 25 wherein said method further comprises creating an object having an input parameter value of said first method during said runtime phase.
33 . The computing system of claim 25 wherein said dictionary identifies an address where said plug-in module can be found.
34 . The computing system of claim 25 wherein said modifying further comprises inserting third additional bytecode instructions in a location that is executed only if a failure arises during execution of said first method.
35 . The computing system of claim 34 wherein said third additional bytecode instructions are executed during said runtime phase only if a failure occurs during said execution of said first method's byte modified bytecode instructions during said runtime phase.
36 . The computing system of claim 35 wherein execution of said third additional bytecode instructions causes a generic error condition to be raised.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.