DETAILED ACTION
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 communication filed on 9/11/2026.
The instant application having application No. 18/742,206 filed on June 13, 2024, presents claims 1-20 for examination, has no priority data.
Status of claims
Claims 1, 5, 9, 13, 17, and 20 have been amended, claims 1-20 are currently pending in the application.
Response to Amendment
(A). Regarding claim objections: Applicant’s amendments to claims 5 and 13 appropriately addressed the objections, the objections are withdrawn.
(B). Regarding art rejection: In regard to pending claims Applicant’s arguments are not persuasive; further, Applicant's amendments necessitated new grounds of rejections presented in the following art rejection.
Examiner Notes
Examiner cites particular columns, paragraphs, figures and line numbers in the references as applied to the claims below for the convenience of the applicant. Although the specified citations are representative of the teachings in the art and are applied to the specific limitations within the individual claim, other passages and figures may apply as well. It is respectfully requested that, in preparing responses, the applicant fully consider the references in their entirety as potentially teaching all or part of the claimed invention, as well as the context of the passage as taught by the prior art or disclosed by the examiner.
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 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.
Specification
The disclosure is objected to because of the following informalities:
Para [0065], line 2, -in case these specialized bodies can be used-.
Appropriate correction is required.
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 of this title, 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.
Claims 1, 4, 6-9, 12, 14-17, and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Gorton (US 20100115494 A1, hereinafter, “Gorton”, cited from IDS filed on 6/13/2024) in view Jung et al. (US 20110145918 A1, hereinafter, “Jung”) and Crowther et al. (US 20170262309 A1, hereinafter, “Crowther”).
With respect to claim 1, Gorton discloses A computer implemented method for managing application execution, the computer implemented method comprising:
monitoring, by a processor set, an execution of an application (e.g. para [0059], “In block 502, instructions of binary code, such as machine code, of a software application may be loaded, translated, instrumented, and executed. In one embodiment, the instrumentation code and analysis code may be augmented to the translated binary code according to directives given by a user via a dynamic binary instrumentation (DBI) tool. …” the instrumentation and analysis read on monitoring);
collecting, by the processor set, current profile information for the application in response to detecting a phase change in the execution of the application, wherein the collection of the current profile information comprises reusing an instrumented body to collect profile information associated with behavior of a body of the application while the application executes (e.g. para [0059], “… In one embodiment, each time a basic block boundary, such as the head or the end, is encountered (conditional block 504), an analysis function call may be invoked and characterization information of the basic block may be compressed and stored, or simply stored, in block 506. …” wherein a basic block boundary reads on a phase change. Fig. 4 shows dynamic binary instrumentation tool 450, para [0054], “… The DBI tool 450 may modify the binary code 420 with instrumentation and analysis code as the binary Is code 420 is executing. As the binary code 420 is being augmented and executed, the DBI tool 450 may convey characteristic information to the program profiler 460 to be stored in collected data 462. …” this paragraph suggests that the instrumented body/code is reused.);
comparing, by the processor set, the current profile information with previously collected profile information for a number of existing profiles corresponding to respective previously occurring phases of the application to determine whether the application has shifted to one of previously occurring phases; (e.g. para [0061], “A comparison is performed between the stored values the New Path and a Previous Path (conditional block 514). …” para [0057], “Next, the DBA tool 464 may analyze the compressed set of paths simultaneously as the binary code 420 is being translated, instrumented, and executed in order to identify repeated paths. …” wherein a repeated path indicates that the application has shifted to one of previously occurring phase, the process suggests comparing the current profile with a number of existing profiles); and
Gorton suggests reusing instrumented code, but does not appear to explicitly disclose
(collecting, by the processor set, current profile information for the application in response to detecting a phase change in the execution of the application), wherein the collection of the current profile information comprises reusing an instrumented body to collect profile information associated with behavior of a body of the application while the application executes;
in responsive to determining that the current profile information matches previously collected profile information for an existing profile in the number of existing profiles corresponding to the previously occurring phase, patching, by the processor set, the application to use an existing specialized body that is an optimized version of a general body that has been optimized for the previously collected profile information for [[an]] the existing profile in the number of existing profiles, wherein the existing specialized body is previously generated for the previously occurring phases corresponding to the existing profile.
However, in analogous art Jung discloses
(…), wherein the collection of the current profile information comprises reusing an instrumented body to collect profile information associated with behavior of a body of the application while the application executes (e.g. para [0037], “… When an instruction is instrumented for dynamic taint analysis, a taint analysis routine may be inserted for execution with the instruction and the instrumented code may be placed in a code cache for reuse throughout the application runtime. …” the combination of Jung with Gorton renders the claim feature obvious);
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine the invention of Gorton with the invention of Jung because it provides techniques for caching instrumented code for reuse throughout the application runtime. A person having ordinary skill in the art would have been motivated to make this combination, with a reasonable expectation of success, for the purpose of providing techniques for caching instrumented code for reuse throughout the application runtime as suggested by Jung (see para [0037]).
Gorton as modified by Jung does not appear to explicitly disclose
in responsive to determining that the current profile information matches previously collected profile information for an existing profile in the number of existing profiles corresponding to the previously occurring phase, patching, by the processor set, the application to use an existing specialized body that is an optimized version of a general body that has been optimized for the previously collected profile information for [[an]] the existing profile in the number of existing profiles, wherein the existing specialized body is previously generated for the previously occurring phases corresponding to the existing profile.
However, this is taught in analogous art, Crowther (e.g. Fig. 2, para [0030], “… Next, as shown at block 207, the switching code for switching from the first use profile to the second use profile may be retrieved from the pre-computed matrix profile data structure. The operations of the switching code may be performed, as shown at block 208.” para [0031], “Whether profile switching can be performed collectively on all modules (i.e., executables and dynamic libraries) used by a program, or just a single module may depend on how the modules were loaded. …” Gorton teaches determining that the current profile matches an existing profile, the combination of Gorton and Crowther renders claim feature obvious).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the invention of Crowther because it provides Separate profiles for each use profile to ensure the best possible performance for that particular use case. A person having ordinary skill in the art would have been motivated to make this combination, with a reasonable expectation of success, for the purpose of providing Separate profiles for each use profile to ensure the best possible performance for that particular use case as suggested by Crowther (see para [0003-0004]).
With respect to claim 4, Crowther discloses further comprising:
running, by the processor set, the application that has been patched to use the existing specialized body (e.g. Fig. 2, step 209, para [0032], “… As shown at block 209, the execution of the application may be resumed with executables for the second use profile. …” For motivation to combine, please refer to office action regarding claim 1 above).
With respect to claim 6, Gorton discloses wherein collecting, by the processor set, the current profile information comprises:
compiling, by the processor set, the general body with profiling instrumentation to form an instrumented body (e.g. para [0042], “… In one embodiment, dynamic analysis 306 may be performed on source code 308. Such an analysis may require instrumentation of the source code 308 itself followed by compilation of the resulting code. …”);
patching, by the processor set, the application to call the instrumented body (e.g. para [0045], “The user writes instrumentation and analysis routines, which may interface with an application programming interface (API) of the DBI tool. The instrumentation is customizable. The user decides where analysis calls are inserted, the arguments to the analysis routines, and what the analysis routines measure. The instrumented IR may then be converted back into binary code, which is referred to as a translation. This translation may be stored in a code cache to be executed as necessary.”);
running, by the processor set, the application using the instrumented body (e.g. para [0045], “… The processor core(s) spends its execution time generating, locating, and executing translations.”); and
collecting, by the processor set, the current profile information in response to the application using the instrumented body. (e.g. para [0046], “For example, an instrumentation toolkit may be instructed to insert code at basic block boundaries within the application program. In one embodiment, the following information may be collected from the application by the instrumentation code at the basic block boundaries: basic block address, "heat" of the basic block, and basic block disassembly. …”).
With respect to claim 7, Gorton discloses wherein the current profile information and the previously collected profile information comprises at least one of a function call, a branch, a system call, or an expected value (e.g. para [0061], “A comparison is performed between the stored values the New Path and a Previous Path (conditional block 514). …. A pointer, identifier, storage element, or other corresponding to Previous Path continues to correspond to the current value of the Previous Path, but with an incremented trip count. In block 522, the pointer, identifier, storage element, or other corresponding to New Path does not continue to correspond to the current value of New Path. Rather the value of New Path is cleared and subsequently extended with the value of the current Bb.” Wherein the pointer or identifier reads on an expected value).
With respect to claim 8, Gorton discloses wherein the phase change is indicated by at least one of a software event, a hardware event, or an external condition (e.g. para [0059], “… In one embodiment, each time a basic block boundary, such as the head or the end, is encountered (conditional block 504), an analysis function call may be invoked and characterization information of the basic block may be compressed and stored, or simply stored, in block 506. …” wherein a basic block boundary reads on a software event).
With respect to claim 9, it is directed to a computer system to implement the method disclosed in claim 1, please see the rejections directed to claim 1 above which also cover the limitations recited in claim 9. Note that, Gorton teaches A computer system comprising (e.g. Fig. 1):
a processor set; a set of one or more computer-readable storage media; and
program instructions, collectively stored in the set of one or more storage media, for causing the processor set to perform the following computer operations (e.g. para [0021-0022]).
With respect to claim 12, it recites same features as claim 4, and is rejected for the same reason.
With respect to claim 14, it recites same features as claim 6, and is rejected for the same reason.
With respect to claim 15, it recites same features as claim 7, and is rejected for the same reason.
With respect to claim 16, it recites same features as claim 8, and is rejected for the same reason.
With respect to claim 17, it is directed to a computer program product to implement the method disclosed in claim 1, please see the rejections directed to claim 1 above which also cover the limitations recited in claim 17. Note that, Gorton teaches A computer program product for managing application execution, the computer program product comprising (e.g. Fig. 1):
a set of one or more computer-readable storage media;
program instructions, collectively stored in the set of one or more storage media, for causing a processor set to perform the following computer operations (e.g. para [0021-0022]).
With respect to claim 20, it recites same features as claim 4, and is rejected for the same reason.
Claims 2-3, 10-11, and 18-19 are rejected under 35 U.S.C. 103 as being unpatentable over Gorton in view of Jung and Crowther as applied to claims 1, 9, and 17 respectively, in further view of Blackstein et al. (US 20200192680 A1, hereinafter, “Blackstein”).
With respect to claim 2, Gorton as modified by Jung and Crowther discloses The computer implemented method of claim 1 Crowther discloses patching, by the processor set, the application to use the new specialized body (e.g. para [0030-0031] as cited for claim 1 above), but does not appear to explicitly disclose further comprising:
compiling, by the processor set, the general body with optimization for the current profile information to form a new specialized body in response to the current profile information not matching the previously collected profile information for the number of existing profiles;
However, this is taught in analogous art, Blackstein (e.g. Fig. 3, para [0048], “In the next game session on shader creation, the computing device selectively invalidates disk cache and recompiles using the PGO opportunities (i.e., the profiling data). This step can be infrequent and rare. For example, once there is confidence in the PGO opportunities (the profiling data), then synching of profile information and recompiling the code should be rare. Confidence in the profiles can be ensured statistically as noted above in step 330. In some examples, the disk cache can be cleared and PGO opportunities sent for recompiling on a time basis to see if new profile information is available for recompiling. …” wherein new profile information suggests the current profile information not matching the previously collected profile information for the number of existing profiles).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the invention of Blackstein because it provides techniques for obtaining the profile information without interfering with a user's experience. A person having ordinary skill in the art would have been motivated to make this combination, with a reasonable expectation of success, for the purpose of providing techniques for obtaining the profile information without interfering with a user's experience as suggested by Blackstein (see para [0012]).
With respect to claim 3, Blackstein discloses further comprising: saving, by the processor set, the current profile information as part of the previously collected profile information (e.g. para [0039], “… The application profiler receives the piecemeal profiles and generates a database from the piecemeal profiles for the game. …” For motivation to combine, please refer to office action regarding claim 2 above); and
associating, by the processor set, the current profile information with the new specialized body (e.g. para [0047], “… The PGO opportunities can be downloaded based on recent games played and employed by the computing devices in recompiling the code for the games. …” wherein recompiling suggests that the current profile information (PGO opportunities) is associated with the new specialized body. For motivation to combine, please refer to office action regarding claim 2 above).
With respect to claim 10, it recites same features as claim 2, and is rejected for the same reason.
With respect to claim 11, it recites same features as claim 3, and is rejected for the same reason.
With respect to claim 18, it recites same features as claim 2, and is rejected for the same reason.
With respect to claim 19, it recites same features as claim 3, and is rejected for the same reason.
Claims 5 and 13 are rejected under 35 U.S.C. 103 as being unpatentable over Gorton in view of Jung and Crowther as applied to claims 1 and 9 respectively, in further view of HAYASHIZAKI et al. (US 20130055226 A1, hereinafter, “HAYASHIZAKI”).
With respect to claim 5, Gorton as modified by Jung and Crowther discloses The computer implemented method of claim 1, but does not appear to explicitly disclose further comprising:
detecting a frequency of a slow path execution; and
determining that the phase change has occurred in response to the frequency of slow path execution exceeding a threshold;
However, in analogous art, HAYASHIZAKI discloses
detecting a frequency of a slow path execution (e.g. para [0015], “2. When the trace is being interpreted, the interpreter records the entry and exit frequency for each basic block on the trace, …” para [0032], “… For instance, a basic block (BB) may be selected as the trace head if the frequency of the basic block invoked exceeds a predetermined threshold that specifies the minimal frequency for a BB to be selected as a trace head, e.g., referred to as trace head threshold (as T.sub.h used in Algorithm 1). …” the basic block reads on a slow path execution); and
determining that the phase change has occurred in response to the frequency of slow path execution exceeding a threshold (e.g. para [0016], “3. A nursery trace is compiled only if its entry frequency exceeds a predefined threshold, …”);
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the invention of HAYASHIZAKI because it provides techniques for incorporating runtime (profiling) information into the compilation scope by profiling in dynamic optimizers. A person having ordinary skill in the art would have been motivated to make this combination, with a reasonable expectation of success, for the purpose of providing techniques for incorporating runtime (profiling) information into the compilation scope by profiling in dynamic optimizers as suggested by HAYASHIZAKI (see para [0005-0006]).
With respect to claim 13, it recites same features as claim 5, and is rejected for the same reason.
Response to Arguments
Applicant's arguments with respect to art rejections filed on 9/11/2026 have been fully considered but they are not persuasive.
At p10 last to p12 third paragraphs of the Remarks, Applicant argued that “These disclosures, however, do not teach the operation now expressly required by amended claim 1. Amended claim 1 does not merely require detecting a phase change. Rather, in response to detecting the phase change, an instrumented body is reused to collect current profile information about behavior of a body of the application while the application executes. The resulting current profile information is then used to determine whether the application has shifted to a previously occurring phase.”
Examiner respectfully disagrees, because, as set forth in the office action, reuse of an instrumented code/body to collect current profile information is suggested by Gorton, e.g. para [0059] of Gorton, “… In one embodiment, each time a basic block boundary, such as the head or the end, is encountered (conditional block 504), an analysis function call may be invoked and characterization information of the basic block may be compressed and stored, or simply stored, in block 506. …” wherein a basic block boundary suggests a phase shift, and invoking the analysis function call suggests the same instrumented code/body is used/reused to collect current profile information. In addition, Jung explicitly teaches reuse of instrumented code/body. Thus, the combination of Gorton and Jung renders the claim feature obvious. Further, Gorton teaches using the current profile information to determine whether the application has shifted to a previously occurring phase, e.g. para [0057] as cited in the office action, wherein identifying repeated paths reads on to determine whether the application has shifted to a previously occurring phase.
At p12 fourth to p13 fifth paragraphs of the Remarks, Applicant argued that “The Office Action therefore relies on different portions of Gorton for different concepts without identifying the claimed relationship among those concepts. The fact that Gorton can separately (i) identify program phases and (ii) compare sequences of basic blocks does not establish the claimed process in which detection of a phase change triggers collection of current profile information, and that newly collected current profile information is then compared against profiles corresponding to previously occurring phases to determine whether one of those phases has returned.”
Examiner respectfully disagrees, because, as explained above, Gorton (supported by Jung) teaches detecting phase change and collecting profile information by reusing the instrumented code/body. As set forth in the office action, Gorton also teaches comparing the current profile information with profiles corresponding to previously occurring phases to determine whether one of those phases has returned, e.g. para [0057] as cited in the office action, wherein identifying repeated paths reads on the claim feature as argued by the Applicant.
Applicant’s other arguments are moot upon new ground of rejections made in the office action above, and with response to the above arguments.
Conclusion
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). 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 Zengpu Wei whose telephone number is 571-270-1302. The examiner can normally be reached on Monday to Friday from 8:00AM to 5:00 PM.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Bradley Teets, can be reached on 571-272-3338. 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://portal.uspto.gov/external/portal. Should you have questions about access to the Private PAIR system, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free).
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.
/ZENGPU WEI/
Examiner, Art Unit 2197