DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
This office action is in response to applicant’s amendment filed on 04/10/2026.
Claims 1-5, 7-11 are pending and examined.
Claim 6 has been cancelled.
Applicant is advised to amend “the one or more abstractions” and “the abstractions” in the claims to “the one or more of the plurality of abstractions” for better clarity.
Response to Arguments
Applicant’s arguments filed on 04/10/2026 have been fully considered, but they are not persuasive.
Applicant first argued Wuerthinger does not refer to usage of representation of code section represented as AST and other forms, whereas it mentions use of profiling data for updating the representation of code section for optimization. However, the independent claims 1 and 8 do not explicitly state the usage of representation of code section represented as AST and other forms. Also, Wuerthinger discloses using code section represented as AST during a code optimization process (claims 1-4). Applicant then argued Wuerthinger does not discuss stabilizing the representation of code after optimization. As per Wuerthinger, stability is considered as a threshold rather than an action that is to be performed by the compiler. A code that has been executed 100 times without change is considered as being fit to be compiled to machine code. The examiner respectfully disagrees. Wuerthinger discloses (claims 1-4; paragraphs [0012][0017]; after a representation is updated(optimized), based on the profiling data, a control path is replaced with a deoptimization point; the deoptimization point is triggered during execution to allow proper execution (consistency)). Thus, Wuerthinger discloses profiling an application execution during an optimization process, the profiled data is used to make the optimized application executes properly (i.e. stabilize the optimized application’s execution). Therefore, the examiner believes Wuerthinger discloses stabilizing the representation of code after optimization.
Applicant also argued that Applicant respectfully asserts that Wuerthinger does not disclose stabilizing by a stabilizer, one or more of the plurality of abstractions using the information captured by the set of predetermined elementary transformations in a stabilization mode, wherein stabilizing the one or more abstractions in response to performing a new optimization operation comprises updating the one or more abstractions using the captured information to maintain consistency of the abstractions with the modified program states. Again, the examiner respectfully disagrees, see the claim rejection below.
The examiner invites applicant to a phone interview for further discussion of the prior art and the rejection.
Claim Rejections - 35 USC § 102
The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention.
Claims 1-5, 8, 10-11 are rejected under 35 U.S.C. 102(a)(1) as being anticipated by Wuerthinger et al. (US PGPUB 2014/0189661) hereinafter Wuerthinger.
Per claim 1, Wuerthinger discloses “a computer-implemented method comprising: receiving, by a processor, an input program; generating, by the processor, a plurality of abstractions of the input program using a plurality of analysis operations, wherein each one of the plurality of abstractions represents information associated with a program state at compile time” (claims 1-4; paragraph [0015]; receiving an input program, generating an abstract syntax tree comprised of nodes and control paths; each control path represents a program state at compile time); “performing, by the processor, one or more optimization operations on one of the plurality of abstractions by modifying the program state associated with the abstraction based on a set of predetermined elementary transformations, wherein the set of predetermined elementary transformations capture the information associated with the modified program state” (claims 1-4; updating a representation based on the profiling data, the representation comprises profiling data, updating the representation comprises changing a type of an operation); “stabilizing by a stabilizer, one or more of the plurality of abstractions using the information captured by the set of predetermined elementary transformations in a stabilization mode, wherein stabilizing the one or more abstractions in response to performing new optimization operation comprises updating the one or more abstractions using the captured information to maintain consistency of the abstractions with the modified program states” (claims 1-4; paragraph [0017]; after a representation is updated(optimized), based on the profiling data, a control path is replaced with a deoptimization point; the deoptimization point is triggered during execution to allow proper execution (consistency); Profiling Data is used as a threshold for determining the stability of Representation of the Code Section, and when a section of code should be speculatively frozen, partially evaluated, and compiled to create Machine).
Per claim 2, Wuerthinger further discloses “wherein the predetermined elementary transformations comprise adding, deleting, or modifying syntactic parts of the program” (claims 1-4; updating a representation based on the profiling data, the representation comprises profiling data, updating the representation comprises changing a type of an operation (modify syntactic)).
Per claim 3, Wuerthinger further discloses “wherein the stabilization mode is one of a lazy-invalidate stabilization mode, lazy-update stabilization mode, eager-update stabilization mode, eager-invalidate stabilization mode, or any combination thereof” (claims 1-4; paragraph [0017]; based on the profiling data, a control path is replaced with a deoptimization point; the deoptimization point is triggered during execution to allow proper execution (consistency); Profiling Data is used as a threshold for determining the stability of Representation of the Code Section, and when a section of code should be speculatively frozen (lazy-update stabilization), partially evaluated, and compiled to create Machine Code).
Per claim 4, Wuerthinger further discloses “wherein the one or more abstractions represent information associated with a serial or a parallel program” (paragraph [0039]; Fig. 3; showing a AST representation of a code, which executes serially, from one node to another node).
Per claim 5, Wuerthinger further discloses “wherein the plurality of abstractions comprise intermediate representation, a control flow graph, and an abstract syntax tree” (paragraph [0015]; abstract syntax tree).
Claim 8 recites a system with components that perform the method described in claim 1. Therefore, claim 8 is rejected under similar rationales as claim 1.
Per claim 10, Wuerthinger further discloses “wherein the stabilizer is configured to operate in a stabilization mode, wherein the stabilization mode is one of lazy-invalidate stabilization mode, lazy-update stabilization mode, eager-update stabilization mode, eager-invalidate stabilization mode, or any combination thereof” (claims 1-4; paragraph [0017]; after a representation is updated(optimized), based on the profiling data, a control path is replaced with a deoptimization point; the deoptimization point is triggered during execution (lazy update stabilization) to allow proper execution (consistency)).
Per claim 11, Wuerthinger further discloses “wherein the optimization component comprises one or more abstraction readers and one or more abstraction writers, and wherein the one or more abstraction readers are configured to read the one or more abstractions and the one or more abstraction writers are configured to modify the one or more abstractions” (claims 1-4; receiving a representation (reading), updating (writing/modifying) a representation based on the profiling data, the representation comprises profiling data, updating the representation comprises changing a type of an operation).
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claim 7 is rejected under 35 U.S.C. 103 as being unpatentable over Wuerthinger, in view of Davis et al. (US PGPUB 2018/0024820) hereinafter Davis.
Per claim 7, Wuerthinger discloses performing analysis on an input program for optimization (claims 1-4), Wuerthinger does not explicitly teach wherein the plurality of abstraction comprises iterative data flow analyses, and wherein the iterative data flow analyses is stabilized using automatic lazy-update stabilization mode. However, Davis discloses (paragraph [009]; a compiler using iterative algorithm for data-flow analysis, a common practice in the field of the art). Wuerthinger further discloses performing stabilizing operations after optimization (claims 1-4; claims 1-4; paragraph [0017]; after a representation is updated(optimized), based on the profiling data, a control path is replaced with a deoptimization point; the deoptimization point is triggered during execution (lazy update stabilization) to allow proper execution (consistency)). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Wuerthinger and Davis to perform iterative data flow analyses for optimization purpose (which is a common practice in the field of the art), and performs stabilization operations using automatic lazy-update stabilization mode so the program can execute properly.
Claim 9 is rejected under 35 U.S.C. 103 as being unpatentable over Wuerthinger, in view of Gass et al. (US PGPUB 2019/0243621) hereinafter Gass.
Per claim 9, Wuerthinger does not explicitly teach “wherein the analysis component comprises pre-processing unit, lexical analysis unit, syntax analysis unit, and semantic analysis unit”. However, Gass suggests the above (paragraphs [0096][0109]; a lexical analysis engine includes applies language token rules, language syntax rules and semantic rules; the input are parsed and processed by a tokenization process). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Wuerthinger and Gass to perform code analysis using pre-processing unit, lexical analysis unit, syntax analysis unit, and semantic analysis unit; in order to perform optimization and compilation processes.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure. See PTO-892 form.
D'Souza (US PGPUB 2019/0179622) discloses a method of optimizing a compiling of program code. When the optimizing compiler determines that an optimization should be made to a section of code, the current state node is copied to create a proposed state node, which is then referenced by the proposed state pointer. The proposed state node is edited to include the optimization while the current state node remains unchanged. The success of the optimization is evaluated, and an updated IL representation is generated in which any references to nodes that are no longer included in the flow of the former IL representation are removed.
THIS ACTION IS MADE FINAL. Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to HANG PAN whose telephone number is (571)270-7667. The examiner can normally be reached 9 AM to 5 PM.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Chat Do can be reached at 571-272-3721. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/HANG PAN/Primary Examiner, Art Unit 2193