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 action is responding to the amendment filed on 10/23/2025.
Claims 1-20 are pending in the application.
Claim Objections
Claim 9 is objected to because of the following informalities: per claim 9, JIT on line 3 needs to be spelled out as: a just in time (JIT).
Appropriate correction is required.
Claim Rejections - 35 USC § 112
The following is a quotation of the first paragraph of 35 U.S.C. 112(a):
(a) IN GENERAL.—The specification shall contain a written description of the invention, and of the manner and process of making and using it, in such full, clear, concise, and exact terms as to enable any person skilled in the art to which it pertains, or with which it is most nearly connected, to make and use the same, and shall set forth the best mode contemplated by the inventor or joint inventor of carrying out the invention.
The following is a quotation of the first paragraph of pre-AIA 35 U.S.C. 112:
The specification shall contain a written description of the invention, and of the manner and process of making and using it, in such full, clear, concise, and exact terms as to enable any person skilled in the art to which it pertains, or with which it is most nearly connected, to make and use the same, and shall set forth the best mode contemplated by the inventor of carrying out his invention.
Claims 1-20 are rejected under 35 U.S.C. 112(a) or 35 U.S.C. 112 (pre-AIA ), first paragraph, as failing to comply with the written description requirement. The claim(s) contains subject matter which was not described in the specification in such a way as to reasonably convey to one skilled in the relevant art that the inventor or a joint inventor, or for applications subject to pre-AIA 35 U.S.C. 112, the inventor(s), at the time the application was filed, had possession of the claimed invention.
The speciation describes that the trace data may identify which other business asset components 26-E were invoked by a business asset component 26-E ([0034], however there is no description for: wherein the first subset of the plurality of business asset components comprises the set of executing business asset components and the one or more business asset components to be invoked by the set of executing business asset components. Invoking some components 26-E by a component 26-E is not the same as compiling the set of components invoking the one or more components and the one or more components to be invoked by the set.
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.
Claims 1-8 and 10-20 are rejected under 35 U.S.C. 103 as being unpatentable over Lafreniere et al (US 20130067441, hereafter Lafreniere) in view of Balko et al. (US20130138473, hereafter Balko).
Per claim 1:
Lafreniere teaches: A method comprising: receiving, by a computing system comprising one or more computing devices, trace data generated from a set of executing code (Lafreniere, see at least [0010], The profile generator generates profile information from the bytecode and stores the profile information. The execution controller enables the interpreter or the JIT compiler to perform their respective functions based on the profile information; Note that the profile information is trace data generated from code execution);
Lafreniere does not explicitly teach that the script code defines business asset components of a plurality of business asset components that form a business process application. However, code can be generated for a wide variety of tasks including business processes. Balko specifically teaches such business asset components of a plurality of business asset components that form a business process application (Balko, see at least Fig.1 and associated texts, execute and perform tasks associated with the underlying business process and business process application; [0015], analyze business process models to determine one or more processes and/or operations that can be combined into a single transaction without modifying the functionality of the business process(es), and which allow the business process(es) to execute in a more efficient manner). It would have been obvious for one having ordinary skill in the art before the effective filing date of the claimed invention to have combined Balko’s business process optimization with Lafreniere’s profile guided optimization to modify Lafreniere’s system to combine the business application process as taught by Balko, with a reasonable expectation of success, since they are analogous art because they are from the same field of endeavor related to code compilation and optimization. Combining Balko’s functionality with that of Lafreniere results in a system that allow business application optimization. The modification would be obvious because one having ordinary skill in the art would be motivated to make this combination to include a script defining a business process to perform business related tasks if desired (Balko, see at least Fig.1 and associated texts, execute and perform tasks associated with the underlying business process and business process application; [0015], analyze business process models to determine one or more processes and/or operations that can be combined into a single transaction without modifying the functionality of the business process(es), and which allow the business process(es) to execute in a more efficient manner).
Lafreniere in view of Balko further teaches: wherein the trace data identifies one or more business asset components of the plurality of business asset components to be invoked by the set of executing business asset component (Lafreniere, see at least [0089], profile information 320 may indicate that a bytecode portion includes a first function that calls a second function. If profile information 320 indicates that the first function is called multiple times, and calls the second function each time, machine code for the second function may be generated that is used to replace the second function in the first function; ([0067]) [0069] In another example, code profiler 502 may monitor and track how many times a particular loop of code ("code loop" or "loop body") is performed in bytecode 324 during execution of source code 208. In profile information 320, code profiler 502 may indicate a start instruction and a finish instruction for the code loop to identify the code loop, for example, or may indicate the code loop in another manner. Code profiler 502 may indicate a number of times the code loop is performed in association with the identified code loop; - Note that the profile data identifies first function invoking (entry point) the second function in a sequence of operations, that is, the data details the caller-callee relationships within a code execution. Beyond simple counts, the profile data maps out the execution flow providing the call hierarchy);
receiving, by the computing system, source code that defines the plurality of business asset components (Lafreniere, see at least [0010] The runtime engine includes a parser, a bytecode generator, an execution controller, an interpreter, a JIT compiler, and a profile generator. The parser receives source code coded in a dynamic language and parses the source code to generate parsed source code. The bytecode generator converts the parsed source code to bytecode; [0006], A script may be received by a runtime engine for execution as part of a web page or other document; [0050] As shown in FIG. 3, engine interface 302 receives script source code 208);
generating, based on the trace data and the source code, native binary executable code for a first subset of the plurality of business asset components and maintaining interpretable code of the source code for a second subset of the plurality of business asset components (Lafreniere, see at least [0006], Profile information regarding the script is collected by the interpreter during execution of the script. The profile information may be used to determine portions of the script that may be more efficiently executed by compiling the portions using a compiler and executing the resulting machine code rather than interpreting those portions of the script. As such, some portions of a script may be executed using an interpreter, and other portions of the script may be compiled using a compiler and executed; [0035], some portions of the script may be interpreted, while other portions of the script are compiled and executed as machine code … portions of a script that are not frequently used may be interpreted (on the fly), while portions of the script that are used more frequently may be compiled and executed. Furthermore, the compiled script code may optionally be stored to save time during future execution of the script).
wherein the first subset of the plurality of business asset components comprises the set of executing business asset components and the one or more business asset components to be invoked by the set of executing business asset components (Lafreniere, see at least 0090] For instance, in the following example of JavaScript, a first function "foo( )" may call a second function "bar( )" in source code 208: TABLE-US-00001 function foo( ) { WScript.Echo("In foo( )"); blah( ); } function bar( ) { WScript.Echo("In bar( )"); } blah = bar; foo( ); When this code is executed, the following text is printed:… However, the assignment "blah=bar" may be hidden in various ways. In such case, JIT compiler 312 may not be able to determine statically what code will be executed when calling blah( ) and blah( ) could be calling different functions at different invocations of the function foo( ). Profile information 320 may indicate to inlining module 902 that, in this case, the assignment "blah( )" always calls "bar( )". As such, JIT compiler 312 may generate machine code that is equivalent to the following script code:
TABLE-US-00002 function foo( ) { WScript.Echo("In foo( )"); if (blah == bar) WScript.Echo("In bar( )"); else bailout_to_interpreter( ); } In this example, machine code for the function "bar( )" is inlined into the function "foo( )" by inlining module 902. This increases program efficiency by avoiding the overhead of making a separate call to "bar( )". Furthermore, in this example, "foo( )" may be configured by inlining module 902 such that a "bailout" may occur if "blah( )" does not call "bar( )". In such a case, the original JavaScript script shown above may be performed (by interpreter 310) rather than the version of "foo( )" with inlined machine code for "bar( )". –Note that for the inlining module 902 to physically place the machine code of bar() inside of the machine code of foo(), both must have been translated from JavaScript into binary code. The caller foo is currently executing as optimized machine code while the callee bar has been inlined meaning its binary code are now literally part of foo’s binary body. Unless the bailout_to_interpreter is triggered, the foo and bar functions are compiled).
Per claim 2:
Lafreniere further teaches: The method of claim 1 further comprising: determining, by the computing system based on the trace data, that each business asset component in the first subset of the plurality of business asset components executed a number N times; determining, by the computing system, that the number N is greater than a determined threshold; and in response to determining that the number N is greater than the determined threshold, generating the native binary executable code for each business asset component in the first subset of the plurality of business asset components (Lafreniere, see at least [0035], embodiments leverage attributes of a script to interpret portions of the script in some instances, while compiling portions of the script just-in-time into machine code for execution in other instances. For example, portions of a script that are not frequently used may be interpreted (on the fly), while portions of the script that are used more frequently may be compiled and executed; [0036]; [0047]; [0066] Code profiler 502 is configured to analyze bytecode 324 for patterns that occur multiple times, and to generate statistics and/or other historical information regarding the patterns, which is included in profile information 320. The historical pattern information may be used to detect the presence of frequently executed functions ("hotspots"), loop bodies, helper calls, property accesses, etc., in bytecode 324. By indicating the presence of such patterns, the historical pattern information may be used to more efficiently execute source code 208, such as by enabling machine code to be generated for commonly occurring patterns; [0067] For instance, code profiler 502 may monitor and track how many times a particular script function is performed in bytecode 324 during execution of source code 208; [0069]; [0084] if a function is called in bytecode 324 a predetermined number of times, it may be desirable for the function to be compiled rather than interpreted; [0093] Type specialization (TS) module 904 is configured to analyze profile information 320 to determine conditions where bytecode portions of bytecode 324 contain typed objects that maintain a same type during multiple executions by interpreter 310 (e.g., a predetermined number of times, such as 2 times, 5 times, of other predetermined number of times). When TS module 904 determines such a bytecode portion, TS module 904 may direct JIT compiler 312 (via signal 328) to compile the bytecode portion into machine code, with the object having the same type as has been repeatedly used. During source code execution, execution controller 308 may point to the generated machine code, which can be executed faster than interpreter 310 can interpret the bytecode portion; Note that a predetermined number is a threshold – the number of executions below and the predetermined number to be interpreted while those equal to or greater than (more frequently) the threshold to be compiled).
3. The method of claim 1 further comprising: determining, by the computing system based on the trace data, that each business asset component in the second subset of the plurality of business asset components executed a total number M times; determining, by the computing system, that the number M is less than a determined threshold; and in response to determining that the number M is less than the determined threshold, maintaining the interpretable code of the source code for each business asset component in the second subset of the plurality of business asset components (Lafreniere, see at least [0035], embodiments leverage attributes of a script to interpret portions of the script in some instances, while compiling portions of the script just-in-time into machine code for execution in other instances. For example, portions of a script that are not frequently used may be interpreted (on the fly), while portions of the script that are used more frequently may be compiled and executed; [0036]; [0047]; [0066] Code profiler 502 is configured to analyze bytecode 324 for patterns that occur multiple times, and to generate statistics and/or other historical information regarding the patterns, which is included in profile information 320. The historical pattern information may be used to detect the presence of frequently executed functions ("hotspots"), loop bodies, helper calls, property accesses, etc., in bytecode 324. By indicating the presence of such patterns, the historical pattern information may be used to more efficiently execute source code 208, such as by enabling machine code to be generated for commonly occurring patterns; [0067] For instance, code profiler 502 may monitor and track how many times a particular script function is performed in bytecode 324 during execution of source code 208; [0069]; [0084] if a function is called in bytecode 324 a predetermined number of times, it may be desirable for the function to be compiled rather than interpreted; [0093] Type specialization (TS) module 904 is configured to analyze profile information 320 to determine conditions where bytecode portions of bytecode 324 contain typed objects that maintain a same type during multiple executions by interpreter 310 (e.g., a predetermined number of times, such as 2 times, 5 times, of other predetermined number of times). When TS module 904 determines such a bytecode portion, TS module 904 may direct JIT compiler 312 (via signal 328) to compile the bytecode portion into machine code, with the object having the same type as has been repeatedly used. During source code execution, execution controller 308 may point to the generated machine code, which can be executed faster than interpreter 310 can interpret the bytecode portion; Note that a predetermined number is a threshold – the number of executions below and the predetermined number to be interpreted while those equal to or greater than (more frequently) the threshold to be compiled).
4. The method of claim 1 wherein the plurality of business asset components comprise one or more of a Business Process Model and Notation (BPMN) task business asset component, a Drool rule business asset component, and a Decision Model and Notation decision business asset component (Balko, see at least [0021] The processes and operations described herein address these issues via a compile-time approach where a process model (e.g., a business process modeling notation (BPMN) diagram) is transformed into a process binary (such as a Trigger Network or other executable format understood by a BPMS runtime, such as Business Process Execution Language (BPEL)) or an optimized version of the process model).
5. The method of claim 1 wherein the trace data includes data identifying values of input variables used by the set of executing business asset components, and wherein generating, based on the trace data and the source code, the native binary executable code for the first subset of the plurality of business asset components further comprises: analyzing the source code to determine a value of an input variable to a first business asset component of the first subset of the plurality of business asset components; accessing the trace data associated with the first business asset component; and based on the value of the input variable and the trace data, generating native binary executable code for the first business asset component (Lafreniere, see at least [0047] Profile generator 204 is configured to analyze script source code 208 to collect statistics and further information about script source code … determine frequently performed portions of script source code 208, startup portions of script source code 208, and/or further information regarding script source code 208; [0070] code profiler 502 may monitor and track objects (e.g., variables) in bytecode 324. For instance, in profile information 320, code profiler 502 may indicate an object, and may indicate one or more of a type of the object (e.g., an integer, a floating point value, etc.), a shape of the object (e.g., the properties of the object), and/or other object features each time that the object is accessed and/or modified. In further examples, code profiler 502 may monitor and track features of arrays (e.g.: array type or array bounds), values of object properties, etc. [0051]; [0084] analyze profile information 320 to determine whether a portion of bytecode 324 may be interpreted, or may be compiled rather than interpreted to improve execution efficiency… if a function is called in bytecode 324 a predetermined number of times, it may be desirable for the function to be compiled rather than interpreted; [0088] detect various conditions in profile information for selecting between interpreting and compiling bytecode; [0095]; [0097]; [0134]; [0066] Code profiler 502 is configured to analyze bytecode 324 for patterns that occur multiple times, and to generate statistics and/or other historical information regarding the patterns, which is included in profile information 320. The historical pattern information may be used to detect the presence of frequently executed functions ("hotspots"), loop bodies, helper calls, property accesses, etc., in bytecode 324. By indicating the presence of such patterns, the historical pattern information may be used to more efficiently execute source code 208, such as by enabling machine code to be generated for commonly occurring patterns; Note that the machine code generated is the native binary executable code).
6. The method of claim 1 wherein the trace data includes data identifying values of input variables used by the set of executing business asset components, and wherein maintaining, based on the trace data and the source code, the interpretable code of the source code for each of the business asset components in the second subset of the plurality of business asset components further comprises: analyzing the source code to determine a value of an input variable to a first business asset component; accessing the trace data associated with the first business asset component; and based on the value of the input variable and the trace data, maintaining the interpretable code of the source code for the first business asset component (Lafreniere, see at least [0047] Profile generator 204 is configured to analyze script source code 208 to collect statistics and further information about script source code … determine frequently performed portions of script source code 208, startup portions of script source code 208, and/or further information regarding script source code 208; [0070] code profiler 502 may monitor and track objects (e.g., variables) in bytecode 324. For instance, in profile information 320, code profiler 502 may indicate an object, and may indicate one or more of a type of the object (e.g., an integer, a floating point value, etc.), a shape of the object (e.g., the properties of the object), and/or other object features each time that the object is accessed and/or modified. In further examples, code profiler 502 may monitor and track features of arrays (e.g.: array type or array bounds), values of object properties, etc. [0051]; [0084] analyze profile information 320 to determine whether a portion of bytecode 324 may be interpreted, or may be compiled rather than interpreted to improve execution efficiency… if a function is called in bytecode 324 a predetermined number of times, it may be desirable for the function to be compiled rather than interpreted; [0088] detect various conditions in profile information for selecting between interpreting and compiling bytecode; [0095]; [0097]; [0134]; [0066]; [0016] FIG. 3 shows a block diagram of a runtime engine configured to interpret portions of a script and to execute compiled portions of the script based on profile information generated based on the script; [0054], During subsequent execution of source code 208 (e.g., later during the same first execution of source code 208, and/or during a subsequent execution of source code 208), execution controller 308 may enable interpreter 310 to interpret portions of source code 208 … based on profile information).
7. The method of claim 1, wherein the source code comprises one or more of a Decision Modeling and Notation (DMN) syntax, a Business Process Model Notation (BPMN) syntax, a Predictive Model Markup Language (PMML) syntax, and a Drools Rule Language (DRL) syntax (Balko, see at least 0021] The processes and operations described herein address these issues via a compile-time approach where a process model (e.g., a business process modeling notation (BPMN) diagram) is transformed into a process binary (such as a Trigger Network or other executable format understood by a BPMS runtime, such as Business Process Execution Language (BPEL)) or an optimized version of the process mode; [0036] Each business process model 115 may be defined in an appropriate syntax or format, such as BPMN).
8. The method of claim 1, The method of claim 1, wherein receiving, by the computing system, the trace data generated from the set of executing business asset components further comprises receiving, by a just in time (JIT) compiler, the trace data concurrently with the execution of the set of executing business asset components; and wherein generating the native binary executable code comprises: determining, by the JIT compiler, that an executing business asset component is to invoke a different business asset component of the one or more business asset components; generating, by the JIT compiler based on the trace data, the native binary executable code for the different business asset component from the source code, wherein the source code defines the different business asset component; and causing, by the JIT compiler, the native binary executable code to be executed (Lafreniere, see at least [0006], The profile information may be used to determine portions of the script that may be more efficiently executed by compiling the portions using a compiler; [0010], the JIT compiler to perform their respective functions based on the profile information; [0003], Once a sufficient amount of profile data regarding the script is gathered, the data may be used by the compiler to generate a better optimized machine code specific to the execution pattern recorded in the profile data); [0047]; [0070]; [0082] As described above with respect to FIGS. 3 and 4, the execution of script source code 208 by runtime engine 300 may be improved based on profile information 320. For instance, portions of bytecode 324 may be compiled and executed on the fly rather than being interpreted to improve script execution efficiency. In embodiments, to improve script performance, run time engine 300 may compile portions of a script for execution based on an analysis of script profile information; [0066]; [0093], JIT compiler 312 (via signal 328) to compile the bytecode portion into machine code … which may be referenced in the generated machine code; [0095]; Note that the profile information is applied (i.e. received) by the compiler while compiling (i.e. execution of code);
10. The method of claim 1 further comprising executing the first subset of the plurality of business asset components via a business process model engine (Balko, see at least [0021] The processes and operations described herein address these issues via a compile-time approach where a process model (e.g., a business process modeling notation (BPMN) diagram) is transformed into a process binary (such as a Trigger Network or other executable format understood by a BPMS runtime, such as Business Process Execution Language (BPEL)) or an optimized version of the process mode; [0036] Each business process model 115 may be defined in an appropriate syntax or format, such as BPMN).
Per claims 11-15, they are the system versions of claims 1, 2, 4, 7, and 8 respectively, and are rejected for the same reasons set forth in connection with the rejection of claims 1, 2, 4, 7, and 8 above.
Per claims 1-20, they are the medium versions of claims 1, 2, 4, 7, and 8 respectively, and are rejected for the same reasons set forth in connection with the rejection of claims 1, 2, 4, 7, and 8 above.
Claim 9 is rejected under 35 U.S.C. 103 as being unpatentable over Lafreniere in view of Balko and Wong et al. (US 20030070161, hereafter Wong).
Per claim 9:
Lafreniere teaches: The method of claim 1, wherein receiving, by the computing system, the trace data generated by the set of executing business asset components further comprises receiving, by aJIT) compiler, the trace data concurrently with the execution of the set of executing business asset components; determining, by the JIT compiler, that an executing business asset component is to invoke a different business asset component of the plurality of business asset components;
wherein maintaining the interpretable code of the source code for the second subset of the plurality of business asset components comprises: determining, by the JIT compiler, that an executing business asset component of the set of executing business asset components is to invoke a different business asset component of the second subset of the plurality of business asset components; determining, by the JIT compiler, that the different business asset component comprises interpretable code; determining, by the JIT compiler based on the trace data, to maintain the different business asset component as interpretable code (Lafreniere, see at least [0047] Profile generator 204 is configured to analyze script source code 208 to collect statistics and further information about script source code … determine frequently performed portions of script source code 208, startup portions of script source code 208, and/or further information regarding script source code 208; [0070] code profiler 502 may monitor and track objects (e.g., variables) in bytecode 324. For instance, in profile information 320, code profiler 502 may indicate an object, and may indicate one or more of a type of the object (e.g., an integer, a floating point value, etc.), a shape of the object (e.g., the properties of the object), and/or other object features each time that the object is accessed and/or modified. In further examples, code profiler 502 may monitor and track features of arrays (e.g.: array type or array bounds), values of object properties, etc. [0051]; [0084] analyze profile information 320 to determine whether a portion of bytecode 324 may be interpreted, or may be compiled rather than interpreted to improve execution efficiency… if a function is called in bytecode 324 a predetermined number of times, it may be desirable for the function to be compiled rather than interpreted; [0088] detect various conditions in profile information for selecting between interpreting and compiling bytecode; [0095]; [0097]; [0134]; [0066]; [0016] FIG. 3 shows a block diagram of a runtime engine configured to interpret portions of a script and to execute compiled portions of the script based on profile information generated based on the script; [0054], During subsequent execution of source code 208 (e.g., later during the same first execution of source code 208, and/or during a subsequent execution of source code 208), execution controller 308 may enable interpreter 310 to interpret portions of source code 208 … based on profile information).
Lafreniere and Balko do not explicitly teach causing, by the JIT compiler, the different business asset component to be interpreted by an interpreter. Wong teaches a JIT compiler causing code to be interpreted by an interpreter (Wong, see at least [0069] If the interpreter determines that JIT compilation is not available, or if the JIT compiler determines that a method is not worthy of compilation, then the interpreter proceeds to interpret the method without compilation (step 820). The virtual machine may then continue execution of the rest of the Java program). It would have been obvious for one having ordinary skill in the art before the effective filing date of the claimed invention to have combined Wong’s JIT determination with Balko’s business process optimization and Lafreniere’s profile guided optimization to modify Lafreniere’s system combined with Balko to combine the JIT compiler determination for interpretation as taught by Wong, with a reasonable expectation of success, since they are analogous art because they are from the same field of endeavor related to code compilation and optimization. Combining Wong’s functionality with that of Lafreniere and Balko results in a system that allow the JIT compiler to cause the interpretation. The modification would be obvious because one having ordinary skill in the art would be motivated to make this combination to enable the JIT compiler to cause the interpreter to interpret code for execution efficiency (Wong, see at least [0069] If the interpreter determines that JIT compilation is not available, or if the JIT compiler determines that a method is not worthy of compilation, then the interpreter proceeds to interpret the method without compilation (step 820). The virtual machine may then continue execution of the rest of the Java program).
Examiner’s Note
The Examiner has pointed out particular references contained in the prior art of record within the body of this action 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. Applicant, in preparing the response, should consider fully the entire reference 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.
Response to Arguments
Applicant's arguments filed 10/23/2025 have been fully considered but they are not persuasive.
The applicant states that nowhere does Lafreniere disclose that the "profile information" of Lafreniere "identifies one or more business asset components of the plurality of business asset components to be invoked by the set of executing business asset components." As such, Lafreniere necessarily cannot teach or suggest "generating ... native binary executable code for... the set of executing business asset components and the one or more business asset components to be invoked by the set of executing business asset components." … Applicant submits that a "first function" that calls a "second function" within a portion of bytecode fails to teach or suggest "one or more business asset components to be invoked by the set of executing business asset components. …" As such, Balko fails to remedy these deficiencies.
In response, Lafreniere in view of Balko teaches that the profile data identifies first function invoking (entry point) the second function in a sequence of operations, that is, the data details the caller-callee relationships within a code execution. Beyond simple counts, the profile data maps out the execution flow providing the call hierarchy (Lafreniere, see at least [0089];; ([0067]) [0069]). In the exemplary JavaScript code, for the inlining module 902 to physically place the machine code of bar() inside of the machine code of foo(), both must have been translated from JavaScript into binary code. The caller foo is currently executing as optimized machine code while the callee bar has been inlined, meaning its binary code are now literally part of foo’s binary body. Unless the bailout_to_interpreter is triggered, the foo and bar functions are compiled (Lafreniere, see at least 0090] TABLE-US-00001 function foo( ) { WScript.Echo("In foo( )"); blah( ); } function bar( ) { WScript.Echo("In bar( )"); } blah = bar; foo( ); … As such, JIT compiler 312 may generate machine code that is equivalent to the following script code:TABLE-US-00002 function foo( ) { WScript.Echo("In foo( )"); if (blah == bar) WScript.Echo("In bar( )"); else bailout_to_interpreter( ); } In this example, machine code for the function "bar( )" is inlined into the function "foo( )" by inlining module 902. This increases program efficiency by avoiding the overhead of making a separate call to "bar( )").
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
JP 4044756 is related to compiling both caller and callee functions.
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 INSUN KANG whose telephone number is (571)272-3724. The examiner can normally be reached M-TR 9-6pm .
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.
/INSUN KANG/Primary Examiner, Art Unit 2193