IP Library Granted Patent US 9,697,021
Granted Patent B2
US 9,697,021 · App. 12/770,814 · Granted Jul 4, 2017

Modifiable high-level intermediate representation of source code

Inventors: Harish Kantamneni (Redmond, WA); Andrew Cherry (Everett, WA); Anders Hauge (Seattle, WA); Amanda Silver (Seattle, WA); Nathan Carlson (Redmond, WA); Anthony Crider (Mill Creek, WA); Abhijeet S. Shah (Redmond, WA); Ming Hong Zhu (Bellevue, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F9/45516
View Patent ↗
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 9,697,021
App. No.
12/770,814
Granted
Jul 4, 2017
Kind
B2
Abstract

A computer-implemented method includes compiling one or more segments of code during run-time of a process executing at one or more processors of a computer system. The compilation produces a high-level intermediate representation of the one or more segments of the code. The high-level intermediate representation is modifiable by the process, without executing the high-level intermediate representation, to generate a modified high-level intermediate representation that is executable by the process.

Claims (35)

1. A computer-implemented method, comprising:

during run-time of an operating system process executing at a computer system:

compiling, within the operating system process, one or more segments of code to produce and store a high-level intermediate representation of the one or more segments of code in volatile memory,

wherein the high-level intermediate representation is user-inspectable and user-modifiable within the operating system process while the high-level intermediate representation is stored in the volatile memory during run-time of the operating system process without executing the high-level intermediate representation and without starting another process, the high-level intermediate representation stored in the volatile memory without being output to a file.

2. The computer-implemented method of claim 1 , wherein the code is user-specified, the method further comprising producing high-level intermediate representations corresponding to each of the one or more segments of code.

3. The computer-implemented method of claim 1 , wherein compiling the one or more segments of code is performed by a compiler hosted by the operating system process.

4. The computer-implemented method of claim 1 , wherein the modified high-level intermediate representation comprises semantic information, wherein the modified high-level intermediate representation is executable by the operating system process by compiling the modified high-level intermediate representation into a machine-executable result without retrieving additional semantic information, the method further comprising executing the machine-executable result.

5. The computer-implemented method of claim 1 , wherein the modified high-level intermediate representation is executable by the operating system process via a run-time interpreter without further compilation of the modified high-level intermediate representation and without retrieving additional context information outside of the operating system process.

6. The computer-implemented method of claim 1 , wherein the high-level intermediate representation of the one or more segments of the code comprises one or more expression trees.

7. The computer-implemented method of claim 6 , wherein the high-level intermediate representation is modified during the run-time of the operating system process based on a context of the operating system process.

8. The computer-implemented method of claim 6 , wherein modifying the high-level intermediate representation includes changing a variable, changing a function, changing an error-checking condition, or any combination thereof.

9. The computer-implemented method of claim 1 , further comprising executing the modified high-level intermediate representation during the run-time of the operating system process.

10. The computer-implemented method of claim 9 , wherein execution of the modified high-level intermediate representation results in modification to an attribute of the operating system process.

11. The computer-implemented method of claim 9 , said executing the modified high-level intermediate representation during the run-time of the operating system process comprising:

executing the modified high-level intermediate representation during the run-time of the operating system process without needing to restart the operating system process.

12. The computer-implemented method of claim 1 , wherein the one or more segments of code are compiled during the run-time of the operating system process without starting another operating system process, wherein the high-level intermediate representation is modified during the run-time of the operating system process without starting another operating system process, and wherein the modified high-level intermediate representation is executed during the run-time of the operating system process without starting another operating system process.

13. The computer-implemented method of claim 1 , wherein the one or more segments of code represent a class, a method, a function, or any combination thereof.

14. A computer system, comprising:

one or more processors to run an operating system process;

a hosted compiler that is executable within the operating system process to compile one or more segments of code to produce and store a high-level intermediate representation of the one or more segments of the code in volatile memory during run-time of the operating system process, the high-level intermediate representation stored in the volatile memory without being output to a file;

a modification module that is executable within the operating system process to modify, based on user input, the high-level intermediate representation of the one or more segments of the code while the high-level intermediate representation is stored in the volatile memory, without executing the high-level intermediate representation and without starting another process, during the run-time of the operating system process, the high-level intermediate representation being user-inspectable during run-time of the operating system process; and

an execution module that is executable within the operating system process to execute the modified high-level intermediate representation of the one or more segments of the code, during the run-time of the operating system process, via a run-time interpreter without further compilation.

15. The computer system of claim 14 , wherein the hosted compiler compiles the one or more segments of code during the run-time of the operating system process.

16. A computer-readable memory comprising instructions that, when executed by a computer system, cause the computer system to:

during run-time of an operating system process executing at one or more processors of the computer system:

compile within the operating system process one or more segments of code to produce and store a first high-level intermediate representation of the one or more segments of the code in volatile memory, the first high-level intermediate representation stored in the volatile memory without being output to a file;

modify, based on user input, within the operating system process, the first high-level intermediate representation of the one or more segments of the code while the high-level intermediate representation is stored in the volatile memory, without executing the first high-level intermediate representation and without starting another process, to produce a second high-level intermediate representation of the one or more segments of the code, the first high-level intermediate representation being user-inspectable during run-time of the operating system process; and

execute within the operating system process the second high-level intermediate representation of the one or more segments of the code via a run-time interpreter without further compilation.

17. The computer-readable memory of claim 16 , further comprising instructions that, when executed by the computer system, cause the computer system to:

during the run-time of the operating system process:

modify the second high-level intermediate representation of the one or more segments of the code to produce a third high-level intermediate representation of the one or more segments of the code; and

execute the third high-level intermediate representation of the one or more segments of the code.

18. The computer system of claim 14 , wherein the code is user-specified.

19. The computer-readable memory of claim 16 , wherein the code is user-specified.

20. The computer-readable memory of claim 16 , wherein the second high-level intermediate representation is executable by the operating system process via a run-time interpreter without further compilation of the second high-level intermediate representation and without retrieving additional context information outside of the operating system process.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034564/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2010
From: KANTAMNENI, HARISH; CHERRY, ANDREW; HAUGE, ANDERS; SILVER, AMANDA; CARLSON, NATHAN; CRIDER, ANTHONY; SHAH, ABHIJEET S; ZHU, MING HONG
To: MICROSOFT CORPORATION
Reel/Frame 024327/0557 →
Continuity (1)
Related Publication 20110271261A1 · Nov 3, 2011