DETAILED ACTION
This action is in response to application 18/394224, filed on 12/22/2023. Claims 1-18 are pending. The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
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.
The factual inquiries for establishing a background for determining obviousness under 35 U.S.C. 103 are summarized as follows:
1. Determining the scope and contents of the prior art.
2. Ascertaining the differences between the prior art and the claims at issue.
3. Resolving the level of ordinary skill in the pertinent art.
4. Considering objective evidence present in the application indicating obviousness or nonobviousness.
Claims 1-2, 4-5, 7-8, 10-11, 13-14, and 16-17 are rejected under 35 U.S.C. 103 as being unpatentable over USPGPUB 2017/0123797, hereinafter “Friedman” and USPGPUB 2025/0061046, hereinafter “Dwars.”
Regarding claim 1, Friedman discloses “A method for compiling computer readable instructions, the method comprising:
receiving a plurality of computer readable instructions including a plurality of functions; (see, e.g., Friedman, para. 30; “a processor comprises an instruction pipeline that processes pre-compiled program code.”) and
for each function of the plurality of functions:
identifying a basic block of the function that causes a return from the function; (see, e.g., Friedman, para. 30; “The processor monitors the instructions that flow through its pipeline and identifies, at runtime, one or more “conditional blocks” of instructions. A conditional block comprises a conditional branch instruction that diverges the execution flow into at least first and second flow-control traces. The first and second traces differ from one another in multiple instructions, and then converge at a given instruction that is again common to the first and second flow-control traces.”)
identifying a conditional branch jumping to the basic block; (see, e.g., Friedman, para. 31; “The conditional branch instruction is typically located at the beginning of the conditional block. In some cases the conditional branch instruction is a forward branch. In other cases, the conditional branch instruction is a backward branch. Moreover, the conditional block may comprise additional conditional branch instructions that further diverge the execution into one or more additional traces.”)
determining a condition tested by the conditional branch.” (see, e.g., Friedman, para. 32; “For at least one of the identified conditional blocks, the processor creates an alternative block of internal micro-ops, which are then processed by the pipeline instead of the original instructions of the conditional block.”; para. 33; “the processor creates the alternative block by (i) forcing the conditional branch instruction to be not taken (or omitting the conditional branch instruction altogether), and (ii) replacing the instructions within the block with conditional instructions, in which the condition is the complement of the branch condition of the omitted conditional branch instruction.”; para. 84; “If the actual branch resolution of the branch is “taken” (i.e., the forced prediction was wrong), the instructions in the CB are flushed.”)
Friedman does not explicitly disclose the following limitations: “determining that a condition tested by the conditional branch returned an error return value; and collecting the error return value of the function.”
However, Dwars discloses (at para. 109 and 124-125) a software testing system whereby return values are collected, including error return values. Dwars and Friedman are directed toward software testing and therefore are analogous art. On or before the effective filing date of the instant application, one of ordinary skill in the art would have deemed it obvious to try to combine the software branch condition testing of Friedman with the error return value collection of Dwars, thereby obtaining the invention of the instant claim. A clear and predictable benefit of so combining would have appeared as the ability to more precisely monitor which conditional branches return errors. Accordingly, the instant claim is unpatentable over the combination of Friedman and Dwars.
Regarding claim 2, the combination of Friedman and Dwars renders obvious “The method of claim 1 further comprising:
grouping the conditional branches of each of the plurality of functions by respective return values of each of the conditional branches; (see, e.g., Friedman, para. 85; “module 67 assigns a respective state to each CB (or, equivalently to each conditional branch that begins a CB).”; see also Dwars 109, 124-125 for return values)
for each of the conditional branches, determining that the respective return value is one of the collected error return value; (see, e.g., Friedman, para. 88; “inspection & indication unit 64 indicates to unit 60 which traces should not be predicted as a result of replacing a CB with an alternative block.”; see also Dwars 109, 124-125 for return values) and
tagging the conditional branch as being unlikely to be taken.” (see, e.g., Friedman, para. 88; “unit 64 may instruct unit 60 to stop predicting the trace that jumps from line 10 to line 50, i.e., stop predicting that the branch in line 10 is taken.”).
Regarding claim 4, the combination of Friedman and Dwars renders obvious “The method of claim 1 wherein the error return value is an enumeration data type error return value.” (see, e.g., Dwars, para. 54, 109; “enum”).
Regarding claim 5, the combination of Friedman and Dwars renders obvious “The method of claim 4 further comprising:
grouping the conditional branches of each of the plurality of functions by respective return values of each of the conditional branches; (see, e.g., Friedman, para. 85; “module 67 assigns a respective state to each CB (or, equivalently to each conditional branch that begins a CB).”; see also Dwars 109, 124-125 for return values)
for each of the conditional branches, determining that the respective return value is one of the collected error return value; (see, e.g., Friedman, para. 88; “inspection & indication unit 64 indicates to unit 60 which traces should not be predicted as a result of replacing a CB with an alternative block.”; see also Dwars 109, 124-125 for return values) and
tagging the conditional branch as being unlikely to be taken.” (see, e.g., Friedman, para. 88; “unit 64 may instruct unit 60 to stop predicting the trace that jumps from line 10 to line 50, i.e., stop predicting that the branch in line 10 is taken.”).
Regarding claims 7-8, 10-11, 13-14, and 16-17, the instant claims are equivalents of claims 1-2 and 4-5, differing only by statutory class. Accordingly, the rejections of claims 1-2 and 4-5 apply, mutatis mutandis, respectively to claims 7-8 and 10-11, and the rejections of claims 1-2 and 4-5 apply, mutatis mutandis, respectively to claims 13-14 and 16-17.
Claims 3, 9, and 15 are rejected under 35 U.S.C. 103 as being unpatentable over Friedman and Dwars and USPGPUB 2004/0025080, hereinafter “Gardner.”
Regarding claim 3, the combination of Friedman and Dwars renders obvious “The method of claim 1” but does not appear to disclose the further limitation “wherein the error return value is one of a NULL pointer, a -1, or a system call failure value.” However, Gardner discloses (at para. 38) a software testing system whereby NULL pointer error return values are detected. Gardner, Dwars, and Friedman are directed toward software testing and therefore are analogous art. On or before the effective filing date of the instant application, one of ordinary skill in the art would have deemed it obvious to try to combine the software branch condition testing of Friedman with the error return value collection of Dwars and the NULL pointer detection of Gardner, thereby obtaining the invention of the instant claim. A clear and predictable benefit of so combining would have appeared as the ability to more precisely monitor which conditional branches return errors. Accordingly, the instant claim is unpatentable over the combination of Gardner, Friedman, and Dwars.
Regarding claims 9 and 15, the instant claims are equivalents of claim 3, differing only by statutory class. Accordingly, the rejection of claim 3 applies, mutatis mutandis, to claims 9 and 15.
Allowable Subject Matter
Claims 6, 12, and 18 are objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims.
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to RYAN D. COYER whose telephone number is (571) 270-5306 and whose fax number is (571) 270-6306. The examiner normally can be reached via phone on Monday-Friday 12pm-10pm Eastern Time. If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Wei Mui, can be reached on 571-272-3708. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300. Information regarding the status of an application may be obtained from the Patent Application Information Retrieval (PAIR) system. Status information for published applications may be obtained from either Private PAIR or Public PAIR. Status information for unpublished applications is available through Private PAIR only. For more information about the PAIR system, see http://pair-direct.uspto.gov. Should you have questions on access to the Private PAIR system, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative or access to the automated information system, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/Ryan D. Coyer/Primary Examiner, Art Unit 2191