Methods and apparatus to manage speculative execution of object locks by diverting the speculative execution of target code
US-9529645-B2 · Dec 27, 2016 · US
US10216500B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-10216500-B2 |
| Application number | US-201213371383-A |
| Country | US |
| Kind code | B2 |
| Filing date | Feb 10, 2012 |
| Priority date | Feb 10, 2012 |
| Publication date | Feb 26, 2019 |
| Grant date | Feb 26, 2019 |
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.
Methods and system for providing synchronization of a multi-threaded application includes analyzing a source file of the application to identify one or more synchronization annotations contained therein, wherein the synchronization annotations are defined using declarative statements. One or more synchronization annotation processors are identified and invoked for processing the one or more synchronization annotations identified in the source file so as to generate code files. The source file is compiled to generate one or more class files by compiling the procedural code within the source file to generate one or more class files, and compiling the code files to generate the one or more class files. The class files associated with the code files are used by the multiple threads during execution of the application to arbitrate access to methods and data manipulated by classes within the class files associated with the procedural code.
Opening claim text (preview).
What is claimed is: 1. A method for providing synchronization of a multi-threaded application, comprising: analyzing a source file of the application to identify a synchronization annotation contained therein, the source file including procedural code of the application and the synchronization annotation defined for the procedural code, wherein the synchronization annotation includes one or more declarative statements that are different from procedural statements implementing business logic within the procedural code; identifying a synchronization annotation processor for processing the synchronization annotation identified in the source file separately from the procedural code of the source file, wherein the synchronization annotation processor is configured to process one or more kinds of synchronization annotation; invoking the synchronization annotation processor for processing the synchronization annotation to generate one or more code files; and compiling the source file using a compiler to generate one or more class files, wherein the compiling includes, compiling the procedural code within the source file to generate corresponding one or more class files for the procedural code; compiling the one or more code files of the synchronization annotation into corresponding one or more class files for the code files, wherein the class files for the code files are maintained separately from the class files for the procedural code and are linked during compile time, the linking enables the class files associated with the one or more code files to use a synchronization service via an application programming interface (API), during execution of the multi-threaded application, to provide arbitration by coordinating activities of multiple threads to methods and data manipulated by classes within the class files associated with the procedural code, the maintaining of the class files for the procedural code separately from the class files for the synchronization annotation allow implementation of different synchronization strategies without requiring changes to the procedural code or the synchronization annotation. 2. The method of claim 1 , wherein the analyzing of the source file further includes, examining the source file to identify declarations contained therein; collecting information related to the declarations, wherein the information identifies attributes of the declarations; and analyzing the synchronization annotation encountered in the source file using the collected information related to the declarations, the analysis of the synchronization annotation identifying attributes that are used to determine the appropriate synchronization annotation processor for processing the synchronization annotation. 3. The method of claim 1 , wherein the class files generated from the code files define attributes of the synchronization annotation identified in the source file, wherein the attributes are used to implement an intent of the synchronization annotation. 4. The method of claim 1 , wherein processing the synchronization annotation further includes, identifying one or more additional synchronization annotations within the code files generated by the synchronization annotation processor; and processing the one or more additional synchronization annotations contained within the code files using one or more synchronization annotation processors to generate one or more code files, the processing being recursive till the generated code files are annotations-free, wherein the code files are compiled into one or more class files, the one or more synchronization annotation processors used for processing additional synchronization annotations being same or different from the synchronization annotation processor used to process the synchronization annotations in the source file. 5. The method of claim 1 , wherein the procedural code is written in Java language and the declarative statements of the synchronization annotation are written as Java annotations. 6. The method of claim 2 , wherein compiling the source file further includes, obtaining collected information related to the declarations that are required for successful compilation of the procedural code in the source file; and generating one or more class files for the procedural code within the source file using the collected information related to the declarations, wherein the class files associated with the procedural code and the class files associated with the synchronization code work together, during execution, in providing synchronization of methods and data manipulation for a multi-threaded program. 7. A computing system having a processor and memory for providing synchronization of a multi-threaded application, the computing system comprising: a compiler configured to analyze a source file of the application to identify one or more synchronization annotations contained therein, the source file including procedural code and the synchronization annotations defined for the procedural code, the synchronization annotations include one or more declarative statements that are different from procedural statements implementing business logic within the procedural code, the compiler further configured to examine the source file to identify declarations contained therein; collect information related to the declarations, wherein the collected information identifies attributes of the declarations; analyze the synchronization annotations encountered in the source file using the collected information related to the declarations, the analysis of the synchronization annotations identifying attributes that are used to determine appropriate synchronization annotation processors for processing the synchronization annotations; a plurality of synchronization annotation processors communicatively connected to the compiler and configured to process the synchronization annotations identified in the source file separately from the procedural code of the source file and generate one or more code files, in response to invoking of the plurality of synchronization annotation processors by the compiler, wherein each of the plurality of synchronization annotation processors is configured to process one or more kinds of synchronization annotations, the generated code files returned to the compiler, wherein the compiler is configured to, compile the procedural code of the source file to generate corresponding one or more class files for the procedural code, compile the code files of the synchronization annotations to generate corresponding one or more class files for the code files, wherein the class files associated with the procedural code and the class files associated with the code files are maintained separately and linked during compile time, the linking enables the class files associated with the one or more code files to use a synchronization service via an application programming interface (API), during execution of the multi-threaded application, to provide arbitration by coordinating activities of multiple threads to methods and data manipulated by classes within the class files associated with the procedural code, the maintaining of the class files for the procedural code separately from the class files for the synchronization annotation allow re-using the procedural code or the synchronization annotation to implement different synchronization strategies without requiring changes to the procedural code or the synchronization annotation. 8. The system of claim 7 , wherein the code generated by the synchronization annotation processor includes one or more additional synchronization annotations that are further processed by one or more of the synchronization annotation processors that are same or different from t
Related publications grouped by family.
Answers are generated from the same data shown on this page.