Optimizing software code
US-2015378757-A1 · Dec 31, 2015 · US
US9785506B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9785506-B2 |
| Application number | US-201314050322-A |
| Country | US |
| Kind code | B2 |
| Filing date | Oct 9, 2013 |
| Priority date | Dec 29, 2005 |
| Publication date | Oct 10, 2017 |
| Grant date | Oct 10, 2017 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A system and method for reducing the likelihood of concurrency errors by identifying vulnerable segments of computer code and stalling other virtual machine threads of execution. According to one embodiment of the present invention, the vulnerable segment is identified at runtime, for example in a dynamic translator. According to another embodiment of the present invention, the vulnerable segment is identified ahead of time, for example in a static translator. According to yet another embodiment of the present invention, the vulnerable segment is identified in the binary translator of a virtual machine monitor.
Opening claim text (preview).
What is claimed is: 1. A method for reducing likelihood of concurrency error, the method comprising: translating computer code for execution on a plurality of processors, wherein translating the computer code includes identifying a vulnerable segment of the computer code and inserting additional code for executing the vulnerable segment of the computer code to form a translated code fragment, wherein the vulnerable segment of the computer code is code containing computer instructions capable of causing a concurrency error when executed by a processor concurrently with another portion of the computer code executed by another processor; executing a first portion of the translated computer code on a first processor of the plurality of processors, wherein the first portion of the translated computer code includes a segment identified as the vulnerable segment of the computer code; prior to the first processor executing the vulnerable segment of the computer code and responsive to execution of the inserted additional code of the translated code fragment: sending a request instructing a second processor of the plurality of processors to stall execution of a second portion of the translated computer code; receiving an indication that the second processor is stalled; upon receiving the indication that the second processor is stalled, executing the vulnerable segment of the computer code; and upon completing execution of the vulnerable segment of the computer code, sending an instruction to the second processor to resume execution of the second portion of the translated computer code, wherein the first processor and the second processor are virtual processors executing respective virtual threads of execution. 2. The method of claim 1 , wherein the second processor is stalled by one of the following: by denying computer code runtime on a central processing unit, by replacing instructions of the second portion of the translated computer code with filler instructions, or by relegating the second portion of the translated computer code to safe instructions. 3. The method of claim 1 , wherein receiving the indication that the second processor is stalled comprises receiving an indication that the second processor is not going to execute the second portion of the translated computer code concurrently with the execution, by the first processor, of the vulnerable segment of the computer code. 4. The method of claim 1 , wherein the second processor is stalled for a defined period of time that is less than a time it takes to complete the execution of the vulnerable segment of the computer code. 5. The method of claim 1 , wherein the request instructing the second processor to stall enables the second processor to execute computer code that is safe to execute while the first processor is executing the vulnerable segment of the computer code. 6. The method of claim 1 , wherein translating the computer code includes translating the vulnerable code segment using a first translation mode and translating other segments of the computer code using a second translation mode. 7. A system for reducing likelihood of concurrency error, the system comprising: one or more computers configured to translate computer code for execution on a plurality of processors including a first processor and a second processor, wherein translating the computer code includes identifying a vulnerable segment of the computer code and inserting additional code for executing the vulnerable segment of the computer code to form a translated code fragment, wherein the vulnerable segment of the computer code is code containing computer instructions capable of causing a concurrency error when executed by a processor concurrently with another portion of the computer code executed by another processor; and wherein the first processor is programmed to: execute a first portion of the translated computer code on the first processor, wherein the first portion of the translated computer code includes a segment identified as the vulnerable segment of the computer code; prior to executing the vulnerable segment of the computer code on the first processor and responsive to execution of the inserted additional code of the translated code fragment: sending a request instructing the second processor to stall execution of a second portion of the translated computer code; receiving an indication that the first processor is stalled; upon receiving the indication that the first processor is stalled, executing the vulnerable segment of the computer code; and upon completing execution of the vulnerable segment of the computer code, sending an instruction to the second processor to resume execution of the second portion of the translated computer code, wherein the first processor and the second processor are virtual processors executing respective virtual threads of execution. 8. The system of claim 7 , wherein the second processor is stalled by one of the following: by denying computer code runtime on a central processing unit, by replacing instructions of the second portion of the translated computer code with filler instructions, or by relegating the second portion of the translated computer code to safe instructions. 9. The system of claim 7 , wherein receiving the indication that the second processor is stalled comprises receiving an indication that the second processor is not going to execute the second portion of the translated computer code concurrently with the execution, by the first processor, of the vulnerable segment of the computer code. 10. The system of claim 7 , wherein the second processor is stalled for a defined period of time that is less than a time it takes to complete the execution of the vulnerable segment of the computer code. 11. The system of claim 7 , wherein the request instructing the second processor to stall enables the second processor to execute computer code that is safe to execute while the first processor is executing the vulnerable segment of the computer code. 12. A non-transitory computer-readable medium comprising computer executable instructions for reducing likelihood of concurrency error, the computer executable instructions, when executed by a first processor, cause the first processor to perform the steps of: translating computer code for execution on a plurality of processors, wherein translating the computer code includes identifying a vulnerable segment of the computer code and inserting additional code for executing the vulnerable segment of the computer code to form a translated code fragment, wherein the vulnerable segment of the computer code is code containing computer instructions capable of causing concurrency error when executed by a processor concurrently with another portion of the computer code executed by another processor; executing a first portion of the translated computer code on the first processor of the plurality of processors, wherein the first portion of the translated computer code includes a segment identified as the vulnerable segment of the computer code; prior to the first processor executing the vulnerable segment of the computer code and responsive to execution of the inserted additional code of the translated code fragment: sending a request instructing a second processor of the plurality of processors to stall execution of a second portion of the translated computer code; receiving an indication that the second processor is stalled; upon receiving the indication that the second processor is stalled, executing the vulnerable segment of the computer code; and upon completing execution of the vulnerable segment of the computer code, sending an instruction to the secon
Solving problems relating to consistency · CPC title
Virtual · CPC title
Runtime code conversion or optimisation · CPC title
Saving, restoring, recovering or retrying · CPC title
Error avoidance (G06F11/07 and subgroups take precedence) · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.