IP Library Granted Patent US 11,409,508
Granted Patent B1
US 11,409,508 · App. 17/359,276 · Granted Aug 9, 2022

Reload ordering for executable code modules

Inventors: Stephen Harris Toub (Winchester, MA); Stephane Delcroix (Brussels, BE); Jan Kotas (Redmond, WA); Michael John McLaughlin (Redmond, WA); Pranav Krishnamoorthy (Newcastle, WA); Thomas A. McDonald (Duvall, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F8/44G06F11/3624
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 11,409,508
App. No.
17/359,276
Granted
Aug 9, 2022
Kind
B1
Abstract

A computing device including a processor configured to receive source code including a plurality of source code modules. The processor may generate executable code from the source code and assign two or more reload indicators to two or more executable code modules. The processor may execute the executable code. During execution of the executable code, the processor may receive a source code update and generate an executable code update from the source code and the source code update. The processor may apply the executable code update to the executable code to generate updated executable code. The processor may generate a reload ordering of two or more reload operations corresponding to the reload indicators. As specified by the reload ordering, the processor may perform the two or more reload operations at the two or more respective executable code modules. The processor may execute the updated executable code.

Claims (88)

1. A computing device comprising:

a processor configured to:

receive source code including a plurality of source code modules;

at a compiler or interpreter, generate executable code from the source code, wherein the executable code includes a plurality of executable code modules corresponding to the plurality of source code modules;

assign two or more reload indicators to two or more executable code modules of the plurality of executable code modules;

execute the executable code;

during execution of the executable code:

receive a source code update to the source code;

at the compiler or interpreter, generate an executable code update from the source code and the source code update;

apply the executable code update to the executable code to generate updated executable code;

generate a reload ordering of two or more reload operations corresponding to the reload indicators; and

as specified by the reload ordering, perform the two or more reload operations at the two or more respective executable code modules to which the reload indicators are assigned; and

execute the updated executable code.

2. The computing device of claim 1 , wherein the processor is configured to assign the two or more reload indicators to the two or more executable code modules at least in part by assigning a plurality of handlers indicating respective reload operation types of the two or more reload operations to the two or more executable code modules.

3. The computing device of claim 2 , wherein each reload operation of the two or more reload operations is a cache clear or a user interface refresh operation.

4. The computing device of claim 2 , wherein the processor is configured to generate the reload ordering at least in part by sorting the plurality of handlers by reload operation type.

5. The computing device of claim 2 , wherein:

the plurality of executable code modules are organized into a plurality of dependency hierarchy levels; and

the processor is configured to generate the reload ordering at least in part by sorting the plurality of handlers associated with the two or more executable code modules by dependency hierarchy level.

6. The computing device of claim 2 , wherein the processor is configured to generate the reload ordering based at least in part on a predefined function reload hierarchy for a plurality of functions included in a predefined function library.

7. The computing device of claim 1 , wherein:

the source code update adds an additional source code module to the source code; and

the processor is further configured to:

generate an additional executable code module from the additional source code module; and

assign an additional reload indicator to the additional executable code module.

8. The computing device of claim 1 , wherein:

the source code update removes a source code module from the source code; and

when the reload ordering is generated, the processor is further configured to exclude, from the reload ordering, a corresponding reload operation of the two or more reload operations associated with an executable code module generated from the source code module.

9. The computing device of claim 1 , wherein the processor is configured to perform the two or more reload operations prior to applying the executable code update to the executable code.

10. The computing device of claim 1 , wherein:

the processor is configured to execute the executable code at a debugger; and

at the debugger, the processor is further configured to:

pause execution of one or more threads of the executable code in response to receiving a pause instruction;

apply the executable code update to the executable code subsequently to pausing the execution of the one or more threads; and

perform the two or more reload operations subsequently to applying the executable code update, while code execution is paused at the debugger.

11. The computing device of claim 10 , wherein, while the execution of the executable code is paused, the processor is further configured to:

at the debugger, receive a selection for execution of one or more executable code modules of the updated executable code;

perform the two or more reload operations in response to receiving the selection of the one or more executable code modules, wherein the two or more reload operations are associated with the one or more executable code modules indicated by the selection; and

execute the one or more executable code modules indicated by the selection in response to performing the two or more reload operations.

12. A method for use with a computing device, the method comprising:

receiving source code including a plurality of source code modules;

at a compiler or interpreter, generating executable code from the source code, wherein the executable code includes a plurality of executable code modules corresponding to the plurality of source code modules;

assigning two or more reload indicators to two or more executable code modules of the plurality of executable code modules;

executing the executable code;

during execution of the executable code:

receiving a source code update to the source code;

at the compiler or interpreter, generating an executable code update from the source code and the source code update;

applying the executable code update to the executable code to generate updated executable code;

generating a reload ordering of two or more reload operations corresponding to the reload indicators; and

as specified by the reload ordering, performing the two or more reload operations at the two or more respective executable code modules to which the reload indicators are assigned; and

executing the updated executable code.

13. The method of claim 12 , wherein assigning the two or more reload indicators to the two or more executable code modules includes assigning a plurality of handlers indicating respective reload operation types of the two or more reload operations to the two or more executable code modules.

14. The method of claim 13 , wherein each reload operation of the two or more reload operations is a cache clear or a user interface refresh operation.

15. The method of claim 13 , wherein generating the reload ordering includes sorting the plurality of handlers by reload operation type.

16. The method of claim 13 , wherein:

the plurality of executable code modules are organized into a plurality of dependency hierarchy levels; and

generating the reload ordering includes sorting the plurality of handlers associated with the two or more executable code modules by dependency hierarchy level.

17. The method of claim 12 , wherein:

the source code update adds an additional source code module to the source code; and

the method further includes:

generating an additional executable code module from the additional source code module; and

assigning an additional reload indicator to the additional executable code module.

18. The method of claim 12 , wherein:

the source code update removes a source code module from the source code; and

generating the reload ordering includes excluding, from the reload ordering, a corresponding reload operation of the two or more reload operations associated with an executable code module generated from the source code module.

19. The method of claim 12 , wherein:

the executable code is executed at a debugger; and

the method further includes, at the debugger:

pausing execution of one or more threads of the executable code in response to receiving a pause instruction;

applying the executable code update to the executable code subsequently to pausing the execution of the one or more threads;

receiving a selection for execution of one or more executable code modules of the updated executable code;

performing the two or more reload operations in response to receiving the selection of the one or more executable code modules, wherein the two or more reload operations are associated with the one or more executable code modules indicated by the selection; and

executing the one or more executable code modules indicated by the selection in response to performing the two or more reload operations.

20. A computing device comprising:

a processor configured to:

receive source code including a plurality of source code modules;

at a compiler or interpreter, generate executable code from the source code, wherein the executable code includes a plurality of executable code modules corresponding to the plurality of source code modules;

assign a plurality of handlers indicating respective reload operation types of two or more reload operations to two or more executable code modules of the plurality of executable code modules;

execute the executable code;

during execution of the executable code:

receive a source code update to the source code;

at the compiler or interpreter, generate an executable code update from the source code and the source code update;

apply the executable code update to the executable code to generate updated executable code;

generate a reload ordering of the two or more reload operations corresponding to the reload indicators, wherein generating the reload ordering includes:

sorting the plurality of handlers by reload operation type; and

for each reload operation type, sorting the plurality of handlers by dependency hierarchy level; and

as specified by the reload ordering, perform the two or more reload operations at two or more respective executable code modules to which the reload indicators are assigned; and

subsequently to performing the two or more reload operations, execute the updated executable code.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 21, 2021
From: TOUB, STEPHEN HARRIS; DELCROIX, STEPHANE; KOTAS, JAN; MCLAUGHLIN, MICHAEL JOHN; KRISHNAMOORTHY, PRANAV; MCDONALD, THOMAS A.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 056939/0169 →
Cited By (2)
US 12,493,460 US 12,578,939