Identifying references to objects during bytecode verification
AssigneeSun Microsystems, Inc.
InventorsStepan Sokolov, David Wallman
Life of this patent
Estimating the term…
Abstract
An enhanced Java Bytecode verifier suitable for operation in a Java computing environment is disclosed. The enhanced Java Bytecode verifier operates to determine whether one or more Java conventional Bytecode commands within a stream of Bytecodes are likely to place a reference to a Java object on the execution stack. In one embodiment, the conventional Java Bytecode commands identified as such are translated by the enhanced Java Bytecode verifier into one or more corresponding Java commands. When a corresponding command is executed, the reference associated with the conventional Java command is placed on a reference stack as well as the execution stack.
Claims21
A method of tracking references that are likely to be the only references to a plurality of objects stored in an object-oriented programming environment, said method comprising:
- determining whether a command is likely to place a reference to an object on an execution stack which is used to execute computer program code in said object-oriented programming environment;
- determining whether there is a change in the flow control between the time command is likely to place said reference to said object on said execution stack and the time said reference is used to access said object when said determining determines that said command is likely to place said reference to said object on said execution stack;
- translating said command into another command that indicates that it is likely that said reference is the only reference to said object when said determining determines that said command is likely to place said reference to said object on said execution stack and said determining determines that there is a change in the flow control between the time said command is likely to place the reference to said object on said execution stack and the time said reference is used to access said object, thereby effectively indicating that said another command is likely to place the only reference to said object on said execution stack;
- executing said another command;
- and
- placing said reference to said object on a reference stack associated with said execution stack when said another command is executed, wherein said reference stack is not used to execute computer program code and is designated to store only references that are likely to be the only references to various objects stored in a heap, thereby storing a reference that is likely to be the only reference to a particular object on said reference stack.
A computing system capable of tracking references that are likely to be the only references to a plurality of objects stored in an object-oriented programming environment, said computing system is capable of operating to:
- determine whether a command is likely to place a reference to an object on an execution stack which is used to execute computer program code in said object-oriented programming environment;
- determine whether there is a change in the flow control between the time command is likely to place said reference to said object on said execution stack and the time said reference is used to access said object when said determining determines that said command is likely to place said reference to said object on said execution stack;
- translate said command into another command that indicates that it is likely that said reference is the only reference to said object when said determining determines that said command is likely to place said reference to said object on said execution stack and said determining determines that there is a change in the flow control between the time said command is likely to place the reference to said object on said execution stack and the time said reference is used to access said object, thereby effectively indicating that said another command is likely to place the only reference to said object on said execution stack;
- execute said another command;
- and
- place said reference to said object on a reference stack associated with said execution stack when said another command is executed, wherein said reference stack is not used to execute computer program code and is designated to store only references that are likely to be the only references to various objects stored in a heap, thereby storing a reference that is likely to be the only reference to a particular object on said reference stack.
A computer readable medium including computer program code for tracking references that are likely to be the only references to a plurality of objects stored in an object-oriented programming environment, said computer readable medium comprising:
- computer program code for determining whether a command is likely to place a reference to an object on an execution stack which is used to execute computer program code in said object-oriented programming environment;
- computer program code for determining whether there is a change in the flow control between the time command is likely to place said reference to said object on said execution stack and the time said reference is used to access said object when said determining determines that said command is likely to place said reference to said object on said execution stack;
- computer program code for translating said command into another command that indicates that it is likely that said reference is the only reference to said object when said determining determines that said command is likely to place said reference to said object on said execution stack and said determining determines that there is a change in the flow control between the time said command is likely to place the reference to said object on said execution stack and the time said reference is used to access said object, thereby effectively indicating that said another command is likely to place the only reference to said object on said execution stack;
- computer program code for executing said another command;
- and
- computer program code for placing said reference to said object on a reference stack associated with said execution stack when said another command is executed, wherein said reference stack is not used to execute computer program code and is designated to store only references that are likely to be the only references to various objects stored in a heap, thereby storing a reference that is likely to be the only reference to a particular object on said reference stack.
Dependencies are inferred from the claim text.