US5987249A
Expired / Lapsed
US
⏱️ 0.0 years remaining
IR code instrumentation
Assignee: Borland Software Corp
•
Filing: 1997-08-21
•
Granted: 1999-11-16
•
Expires: 2017-08-21
Abstract
Abstract Instrumenting a computer program includes examining an initial intermediate representation of the program, selecting portions of the initial intermediate representation for instrumentation, and instrumenting the portions. Selecting the portions may include choosing portions of the initial intermediate representation corresponding to pointer arithmetic operations, operations that reads memory locations, operations that change memory locations, and/or operations that causes program variables to become defined or undefined within the program. Instrumenting the portions may include adding run time code that provides a user with an indication when a run time error occurs.
Inventors
- 👤 Franklin C. Grossman
- 👤 David C. Angel
- 👤 David A. Seidel
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-10-30 10:50
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/36; G06F11/362; G06F11/3644
Claims Analysis
Total Claims: 20
Claim 1
Independent Claim
73 words
A method of instrumenting a computer program, comprising: (a) examining an initial intermediate representation of the program; (b) selecting portions of the initial intermediate representation for instrumentation; and (c) instrumenting the portions, wherein selecting the portions includes choosing portions of the initial intermediate representation corresponding to pointer arithmetic operations, operations that reads memory locations, operations that change memory locations, and operations that causes program variables to become defined or undefined within the program.
Claim 2
Independent Claim
73 words
A method of instrumenting a computer program, comprising: (a) examining an initial intermediate representation of the program; (b) selecting portions of the initial intermediate representation for instrumentation; and (c) instrumenting the portions, wherein selecting the portions includes choosing portions of the initial intermediate representation corresponding to pointer arithmetic operations, operations that reads memory locations, operations that change memory locations, and operations that causes program variables to become defined or undefined within the program.
Claim 3
Dependent Claim
28 words
A method according to claim 1, wherein instrumenting the portions includes adding run time code that provides a user with an indication when a run time error occurs.
Claim 4
Dependent Claim
58 words
A method of instrumenting a computer program, according to claim 1, further comprising: (d) creating an intermediate representation tree of nodes corresponding to intermediate representation operations and operands of the initial intermediate representation, the nodes being interconnected according to a logical relationship between the operators and the operands, wherein instrumenting the portions includes modifying the intermediate representation tree.
Claim 5
Dependent Claim
36 words
A method according to claim 3, further comprising: (e) following instrumenting the portions by modifying the Intermediate Representation tree, transforming the tree into an instrumented intermediate representation that is structurally equivalent to the initial intermediate representation.
Claim 6
Dependent Claim
26 words
A method according to claim 3, wherein creating the intermediate representation tree includes interconnecting the nodes so that children nodes of an operator are operands thereof.
Claim 7
Dependent Claim
39 words
A method according to claim 5 wherein creating the intermediate representation tree includes placing the children nodes on a local stack and then popping the children nodes off the local stack to connect the children nodes to parents thereof.
Claim 8
Dependent Claim
120 words
A method according to claim 1, further comprising: (d) creating an effective scope table that correlates a unique scope identifier for each block of intermediate representation code contained within the initial intermediate representation to an effective scope identifier that indicates whether new program variables are defined within a each block of intermediate representation code; and (e) in response to a first block of the intermediate representation code having a first effective scope identifier not equal to a second effective scope identifier of a second block of the intermediate representation code that precedes the first block of the intermediate representation code, selecting for instrumentation a portion of the intermediate representation code corresponding to a transition between the first and second blocks.
Claim 9
Dependent Claim
126 words
A method according to claim 1, further comprising: (d) creating an effective scope table that correlates a unique scope identifier for each block of intermediate representation code contained within the initial intermediate representation to an effective scope identifier that indicates whether new program variables are defined within a each block of intermediate representation code; and (e) in response to a first block of the intermediate representation code containing a label and having associated therewith a first effective scope identifier not equal to a second effective scope identifier of a second block of the intermediate representation code containing a control flow instruction to the label, selecting for instrumentation a portion of the intermediate representation code corresponding to a transition between the control flow instruction and the label.
Claim 10
Independent Claim
99 words
A method of instrumenting a computer program, comprising: (a) examining an initial intermediate representation of the program; (b) creating an intermediate representation tree of nodes corresponding to intermediate representation operations and operands of the initial intermediate representation, the nodes being interconnected according to a logical relationship between the operators and the operands; (c) selecting portions of the initial intermediate representation for instrumentation; (d) instrumenting the portions by modifying the intermediate representation tree with run time instrumentation code; and (e) using the intermediate representation tree to create an instrumented intermediate representation that is structurally equivalent to the initial intermediate representation.
Claim 11
Independent Claim
99 words
A method of instrumenting a computer program, comprising: (a) examining an initial intermediate representation of the program; (b) creating an intermediate representation tree of nodes corresponding to intermediate representation operations and operands of the initial intermediate representation, the nodes being interconnected according to a logical relationship between the operators and the operands; (c) selecting portions of the initial intermediate representation for instrumentation; (d) instrumenting the portions by modifying the intermediate representation tree with run time instrumentation code; and (e) using the intermediate representation tree to create an instrumented intermediate representation that is structurally equivalent to the initial intermediate representation.
Claim 12
Dependent Claim
51 words
A method according to claim 9, wherein selecting the portions includes choosing portions of the initial intermediate representation corresponding to at least one of: pointer arithmetic operations, operations that reads memory locations, operations that change memory locations, and operations that causes program variables to become defined or undefined within the program.
Claim 13
Dependent Claim
26 words
A method according to claim 9, wherein creating the intermediate representation tree includes interconnecting the nodes so that children nodes of an operator are operands thereof.
Claim 14
Dependent Claim
39 words
A method according to claim 11, wherein creating the intermediate representation tree includes placing the children nodes on a local stack and then popping the children nodes off the local stack to connect the children nodes to parents thereof.
Claim 15
Dependent Claim
120 words
A method according to claim 9, further comprising: (d) creating an effective scope table that correlates a unique scope indentifier for each block of intermediate representation code contained within the initial intermediate representation to an effective scope identifier that indicates whether new program variables are defined within a each block of intermediate representation code; and (e) in response to a first block of the intermediate representation code having a first effective scope identifier not equal to a second effective scope identifier of a second block of the intermediate representation code that precedes the first block of the intermediate representation code, selecting for instrumentation a portion of the intermediate representation code corresponding to a transition between the first and second blocks.
Claim 16
Dependent Claim
126 words
A method according to claim 9, further comprising: (d) creating an effective scope table that correlates a unique scope identifier for each block of intermediate representation code contained within the initial intermediate representation to an effective scope identifier that indicates whether new program variables are defined within a each block of intermediate representation code; and (e) in response to a first block of the intermediate representation code containing a label and having associated therewith a first effective scope identifier not equal to a second effective scope identifier of a second block of the intermediate representation code containing a control flow instruction to the label, selecting for instrumentation a portion of the intermediate representation code corresponding to a transition between the control flow instruction and the label.
Claim 17
Dependent Claim
134 words
A computer program instrumenter, comprising: (a) examining means for examining an initial intermediate representation of the program; (b) creating means, coupled to the examining means, for creating an intermediate representation tree of nodes corresponding to intermediate representation operations and operands of the initial intermediate representation, the nodes being interconnected according to a logical relationship between the operators and the operands; (c) selecting means, coupled to the examining means, for selecting portions of the initial intermediate representation for instrumentation; (d) instrumenting means, coupled to the creating means and the selecting means, for instrumenting the portions by modifying the intermediate representation tree with run time instrumentation code; and (e) means, coupled to the instrumenting means, for using the intermediate representation tree to create an instrumented intermediate representation that is structurally equivalent to the initial intermediate representation.
Claim 18
Dependent Claim
134 words
A computer program instrumenter, comprising: (a) examining means for examining an initial intermediate representation of the program; (b) creating means, coupled to the examining means, for creating an intermediate representation tree of nodes corresponding to intermediate representation operations and operands of the initial intermediate representation, the nodes being interconnected according to a logical relationship between the operators and the operands; (c) selecting means, coupled to the examining means, for selecting portions of the initial intermediate representation for instrumentation; (d) instrumenting means, coupled to the creating means and the selecting means, for instrumenting the portions by modifying the intermediate representation tree with run time instrumentation code; and (e) means, coupled to the instrumenting means, for using the intermediate representation tree to create an instrumented intermediate representation that is structurally equivalent to the initial intermediate representation.
Claim 19
Dependent Claim
55 words
A computer program instrumenter, according to claim 15, wherein the portions that are selected by the selecting means includes intermediate representation code corresponding to at least one of: pointer arithmetic operations, operations that reads memory locations, operations that change memory locations, and operations that causes program variables to become defined or undefined within the program.
Claim 20
Dependent Claim
27 words
A computer instrumenter, according to claim 15, wherein the nodes of the intermediate representation tree are interconnected so that children nodes of an operator are operands thereof.
References Cited (Backward Citations)
US4775932A
Cited
US4667290A
Cited
US5274811A
Cited
US5175856A
Cited
US5339419A
Cited
US5280613A
Cited
US5276881A
Cited
US5493675A
Cited
US5335344A
Cited
US5193180A
Cited
US5535329A
Cited
US5583988A
Cited
US5664191A
Cited
US5790858A
Cited
US5613063A
Cited
US5581696A
Cited
US5734908A
Cited
US5732273A
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 2002-11-15 | 2003-05-17 | 2003-11-16 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2006-11-15 | 2007-05-17 | 2007-11-16 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2010-11-15 | 2011-05-17 | 2011-11-16 | $7700.00 | Window Closed / Lapsed |