IP Library Patent Application 12819006
Patent Application
App. No. 12/819,006

REGISTRATION METHOD FOR SUPPORTING BYTECODE MODIFICATION

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
12/819,006
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 (63)

1 . 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.

Assignments (2)
CHANGE OF NAME Recorded Apr 20, 2015
From: SAP AKTIENGESELLSCHAFT
To: SAP AG
Reel/Frame 035468/0060 →
CHANGE OF NAME Recorded Aug 26, 2014
From: SAP AG
To: SAP SE
Reel/Frame 033625/0223 →