US2023168902A1PendingUtilityA1

Bootstrapping Profile-Guided Compilation and Verification

Assignee: GOOGLE LLCPriority: Nov 15, 2016Filed: Jan 13, 2023Published: Jun 1, 2023
Est. expiryNov 15, 2036(~10.3 yrs left)· nominal 20-yr term from priority
G06F 8/37G06F 9/4552G06F 8/70G06F 9/4451G06F 8/41H04L 67/10G06F 9/4406
73
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

Apparatus and methods related providing application execution information (AEI) are provided. A server can receive a request to provide a software package for a particular software application. The server can determine composite AEI (CAEI) for the particular software application. The CAEI can include a composite list of software with data about software methods of the particular software application executed by a computing device other than the server. The server can extract particular AEI related to the particular software application from the CAEI. The particular AEI can provide compiler hints for compiling at least one software method predicted to be executed by the particular software application. The server can generate the software package, where the software package can include the particular software application and the particular AEI. The server can provide the software package.

Claims

exact text as granted — not AI-modified
1 - 20 . (canceled) 
     
     
         21 . A method comprising:
 receiving, by a package manager, a composite application execution information (AEI) for at least a particular software application, the composite AEI including a composite list of software for at least the particular software application, wherein the composite list of software comprises fingerprint information for each software in the composite list of software, wherein the fingerprint information comprises a version associated with each software;   determining, by the package manager, particular AEI related to the particular software application based on the fingerprint information, the particular AEI providing one or more compiler hints for compiling at least one software method of a list of software methods predicted to be executed by the particular software application;   generating, by the package manager, a software package, wherein the software package includes the particular software application and the particular AEI; and   providing, by the package manager, the software package.   
     
     
         22 . The method of  claim 21 , wherein the one or more compiler hints indicate information about at least one version of the at least one software method of the list of software methods to be used in compiling the particular software application. 
     
     
         23 . The method of  claim 21 , wherein the fingerprint information further includes:
 information identifying the particular software application or information about an operating system used to execute the particular software application.   
     
     
         24 . The method of  claim 21 , wherein the composite list of software comprises data about one or more software classes utilized by the particular software application. 
     
     
         25 . The method of  claim 21 , wherein at least one compiler hint of the one or more compiler hints indicates a first software method of the list of software methods to compile before runtime of the particular software application and a second software method to compile during runtime of the particular software application 
     
     
         26 . The method of  claim 25 , wherein the second software method comprises an initialization software method, and wherein the compiler hint for indicating to compile the second software method comprises a compiler hint for indicating to compile the initialization software method during runtime of the particular software application. 
     
     
         27 . The method of  claim 21 , wherein the composite AEI further comprises information including at least one of: class hierarchy information related to the particular software application, information about memory used during execution of the particular software application, information about power consumed during execution of the particular software application, devirtualization information related to the particular software application, information about hardware of a computing device executing the particular software application, information related to dependencies between operating system versions and application program interfaces (APIs), information about how frequently a particular method is invoked from a particular calling location of the particular software application, information about how frequently a particular branch of a control statement of the particular software application is followed, information about one or more program variables in the particular software application, information about a number of iterations of a repetitive software structure are performed by the particular software application, or information about values of control variables of a repetitive software structure of a software application. 
     
     
         28 . The method of  claim 21 , wherein the composite AEI is determined based on a plurality of computing devices that have executed the particular software application. 
     
     
         29 . The method of  claim 21 , wherein the composite AEI further comprises information about one or more application program interfaces that are utilized by the particular software application. 
     
     
         30 . The method of  claim 21 , wherein the composite AEI includes static profiling information for the particular software application. 
     
     
         31 . The method of  claim 30 , wherein the static profiling information is determined without execution of the particular software application. 
     
     
         32 . The method of  claim 30 , wherein the static profiling information includes information about semantics of the particular software application and information about variable values of the particular software application. 
     
     
         33 . The method of  claim 21 , wherein the composite AEI is determined through aggregating static profiling information into the composite AEI, wherein the static profiling information is determined using one or more profiling heuristics. 
     
     
         34 . The method of  claim 21 , wherein the composite AEI is determined based on one or more counts of one or more software methods of the particular software application. 
     
     
         35 . The method of  claim 34 , wherein the composite AEI is determined based on a union of a first AEI for the particular software application and a second AEI for the particular software application. 
     
     
         36 . The method of  claim 34 , wherein the composite AEI is determined based on an intersection of a first AEI for the particular software application and a second AEI for the particular software application. 
     
     
         37 . The method of  claim 34 , wherein the composite AEI is determined based on at least a sum of data from a first AEI for the particular software application and a second AEI for the particular software application. 
     
     
         38 . The method of  claim 21 , wherein the particular software application is executable by at least a first version of an operating system and a second version of an operating system, wherein the first version of the operating system does not support a first application program interface utilized by the particular software application, wherein the second version of the operating system does support the first application program interface, wherein the particular AEI is determined based on first information for validating the particular software application related to the first version of the operating system from the composite AEI, wherein the first information for validating the particular software application includes information that the first application program interface is not supported by the first version of the operating system, and wherein the particular AEI is determined based on second information for validating the particular software application related to the second version of the operating system from the composite AEI, wherein the second information for validating the particular software application includes information that the first application program interface is supported by the second version of the operating system. 
     
     
         39 . A computing device comprising:
 one or more processors; and   data storage including at least computer-executable instructions stored thereon that, when executed by the one or more processors, cause the computing device to perform functions comprising:   receiving, by a package manager, a composite application execution information (AEI) for at least a particular software application, the composite AEI including a composite list of software for at least the particular software application, wherein the composite list of software comprises fingerprint information for each software in the composite list of software, wherein the fingerprint information comprises a version associated with each software;   determining, by the package manager, particular AEI related to the particular software application based on the fingerprint information, the particular AEI providing one or more compiler hints for compiling at least one software method of a list of software methods predicted to be executed by the particular software application;   generating, by the package manager, a software package, wherein the software package includes the particular software application and the particular AEI; and   providing, by the package manager, the software package.   
     
     
         40 . A non-transitory computer readable medium having stored thereon instructions, that when executed by one or more processors of a computing device, cause the computing device to perform functions comprising:
 receiving, by a package manager, a composite application execution information (AEI) for at least a particular software application, the composite AEI including a composite list of software for at least the particular software application, wherein the composite list of software comprises fingerprint information for each software in the composite list of software, wherein the fingerprint information comprises a version associated with each software;   determining, by the package manager, particular AEI related to the particular software application based on the fingerprint information, the particular AEI providing one or more compiler hints for compiling at least one software method of a list of software methods predicted to be executed by the particular software application;   generating, by the package manager, a software package, wherein the software package includes the particular software application and the particular AEI; and   providing, by the package manager, the software package.

Join the waitlist — get patent alerts

Track US2023168902A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.