Search Images Maps Play YouTube News Gmail Drive More »
Sign in
Screen reader users: click this link for accessible mode. Accessible mode has the same essential features but works better with your reader.

Patents

  1. Advanced Patent Search
Publication numberUS20060026580 A1
Publication typeApplication
Application numberUS 11/189,411
Publication dateFeb 2, 2006
Filing dateJul 26, 2005
Priority dateJul 27, 2004
Also published asEP1622009A1, US7260682, US7493476, US7500085, US7533250, US7543285, US7546437, US7574584, US7587583, US7606977, US7624382, US7743384, US7752610, US7757223, US7930689, US8024554, US8024716, US8046748, US8078842, US8185666, US8380906, US8516496, US9201807, US20060023517, US20060025986, US20060026126, US20060026183, US20060026200, US20060026201, US20060026312, US20060026322, US20060026353, US20060026354, US20060026357, US20060026370, US20060026390, US20060026391, US20060026392, US20060026393, US20060026394, US20060026395, US20060026396, US20060026397, US20060026398, US20060026400, US20060026401, US20060026402, US20060026403, US20060026404, US20060026405, US20060026407, US20060026412, US20060026563, US20060026564, US20060026565, US20060026566, US20060026571, US20060026574, US20060026575
Publication number11189411, 189411, US 2006/0026580 A1, US 2006/026580 A1, US 20060026580 A1, US 20060026580A1, US 2006026580 A1, US 2006026580A1, US-A1-20060026580, US-A1-2006026580, US2006/0026580A1, US2006/026580A1, US20060026580 A1, US20060026580A1, US2006026580 A1, US2006026580A1
InventorsGilbert Cabillic, Mikael Peltier, Jean-Philippe Lesot
Original AssigneeTexas Instruments Incorporated
Export CitationBiBTeX, EndNote, RefMan
External Links: USPTO, USPTO Assignment, Espacenet
Method and related system of dynamic compiler resolution
US 20060026580 A1
Abstract
A method and related system of dynamic compiler resolution. Some of the illustrative embodiments are a computer-implemented method comprising compiling a source file containing an application program (the compiling creates a destination file containing a compiled version of the application program), and inserting in the compiled version of the application program a series of commands that (when executed at run time of the application program) generate an optimized code portion using a value available at run time.
Images(4)
Previous page
Next page
Claims(23)
1. A computer-implemented method comprising:
compiling a source file containing an application program, the compiling creates a destination file containing a compiled version of the application program; and
inserting in the compiled version of the application program a series of commands that, when executed at run time of the application program, generate an optimized code portion using a value available at run time.
2. The computer-implemented method as defined in claim 1 wherein compiling further comprises compiling a source file containing human-readable source code of the application program.
3. The computer-implemented method as defined in claim 1 wherein compiling creates the compiled version of the application program that is executable.
4. The computer-implemented method as defined in claim 3 wherein compiling creates the compiled version of the application program that is directly executable by a processor.
5. The computer-implemented method as defined in claim 3 wherein compiling creates the compiled version of the application program executable on a processor by way of an interpreter.
6. The computer-implemented method as defined in claim 1 further comprising, after inserting, replacing the series of commands with the optimized code portion.
7. The computer-implemented method as defined in claim 1 wherein the compiling and inserting take place prior to execution of the application program.
8. The computer-implemented method as defined in claim 1 wherein the compiling and inserting take place on a first portion of the application program while a second portion of the application program is executed.
9. A computer-readable medium storing a compiler program that, when executed by a processor, performs a method comprising:
compiling source code of an application program to create a compiled version of the application program; and
inserting in the compiled version of the application program a series of commands that, when executed at run time of the application program, generate optimized code using a value available at run time.
10. The computer-readable medium as defined in claim 9 wherein compiling further comprises compiling to create an executable version of the application program.
11. The computer-readable medium as defined in claim 10 wherein compiling further comprises compiling to create the compiled version of the application program that is directly executable by a processor.
12. The computer-readable medium as defined in claim 10 wherein compiling further comprises compiling to create the compiled version of the application program that is platform independent and executable on a processor by way of an interpreter.
13. The computer-readable medium as defined in claim 9 wherein compiling further comprises the source code of the application program that is human readable.
14. The computer-readable medium as defined in claim 9 wherein the method further comprises, after inserting, replacing the series of commands in the compiled version of the application program with the optimized code.
15. The computer-readable medium as defined in claim 9 wherein the compiling and inserting take place prior to execution of the application program.
16. The computer-readable medium as defined in claim 9 wherein the compiling and inserting takes place on a first portion of the application program while a second portion of the application program is executed.
17. A system comprising:
a memory, wherein the memory contains a source file of an program; and
a first processor coupled to the memory;
wherein the first processor is configured to compile the program of the source file to create a compiled program, and wherein the processor is configured to insert in the compiled program a series of commands that, when executed at run time, generate an optimized code portion using a value available at run time.
18. The system as defined in claim 17 wherein the source file in the memory is a human readable source code file for the application program.
19. The system as defined in claim 17 wherein the compiled version of the program in the destination file is executable on the processor by way of an interpreter program.
20. The system as defined in claim 17 wherein the compiled version of the program in the destination file is directly executable on the processor.
21. The system as defined in claim 17 further comprising:
a second processor coupled to the memory and the first processor;
wherein the second processor is configured to directly execute at least one command of the compiled program.
22. The system as defined in claim 17 further comprising wherein the first processor is configured to create a first portion of the compiled program while a second portion of the compiled program executes on one or both the first and second processors.
23. The system as defined in claim 17 further comprising wherein the first processor is configured to create the compiled program prior to execution of any portion of the compiled program.
Description
    CROSS-REFERENCE TO RELATED APPLICATIONS
  • [0001]
    This application claims the benefit of European Patent Application No. 04291918.3, filed Jul. 27, 2004, incorporated by reference herein as if reproduced in full below. This application is related to co-pending and commonly assigned application Ser. No. ______ [atty. docket TI-38588 (1962-22900)] entitled “Method And System Of Adaptive Compiler Resolution.”
  • BACKGROUND OF THE INVENTION
  • [0002]
    1. Technical Field of the Invention
  • [0003]
    Embodiments of the present invention relate to compilers and creation of optimized executable code.
  • [0004]
    2. Background Information
  • [0005]
    A compiler is a software program that takes a source file containing a program in a particular form, and converts the program to another form. In some cases, the compiler starts with a human-readable source code file (e.g. a program written in JAVA™ or C++) and converts or compiles to a binary file that may be directly executable or that may require interpretation or further compiling.
  • [0006]
    Compilers come in several varieties, such as static compilers (sometimes referred to as “ahead-in-time” compilers) or dynamic compilers (sometimes referred to as “just-in-time” compilers). Static compilers complete their work on the source file before the program is executed. Dynamic compilers, by contrast, compile the source file during execution of the program embodied in the source file. Both static and dynamic compilers also may perform optimization as part of the compiling processing, possibly to reduce execution time.
  • [0007]
    Static compilers perform some optimizations, such as inlining of methods, but in many cases optimization requires the knowledge of values of runtime parameters which are not known when static compiling is performed. Dynamic compilers thus have the advantage of having available the values of runtime parameters, and thus may make optimizations based on those parameters, but gain realized by optimization performed by dynamic compilers is offset by the fact the compiler too is running and sharing time on the processor, thus slowing the overall execution of the application program.
  • SUMMARY
  • [0008]
    The problems noted above are solved in large part by a method and related system of dynamic compiler resolution. Some of the illustrative embodiments are a computer-implemented method comprising compiling a source file containing an application program (the compiling creates a destination file containing a compiled version of the application program), and inserting in the compiled version of the application program a series of commands that (when executed at run time of the application program) generate an optimized code portion using a value available at run time.
  • [0009]
    Other illustrative embodiments are a computer-readable medium storing a compiler program that performs a method comprising compiling source code of an application program to create a compiled version of the application program, and inserting in the compiled version of the application program a series of commands that, when executed at run time of the application program, generate optimized code using a value available at run time.
  • [0010]
    Yet still other illustrative embodiments are a system comprising a memory (wherein the memory contains a source file of an program), and a first processor coupled to the memory. The first processor is configured to compile the program of the source file to create a compiled program, and the processor is configured to insert in the compiled program a series of commands that (when executed at run time) generate an optimized code portion using a value available at run time.
  • NOTATION AND NOMENCLATURE
  • [0011]
    Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, semiconductor companies may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . ”. Also, the term “couple” or “couples” is intended to mean either an indirect or direct connection. Thus, if a first device couples to a second device, that connection may be through a direct connection, or through an indirect connection via other devices and connections.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • [0012]
    For a more detailed description of the preferred embodiments of the present invention, reference will now be made to the accompanying drawings, wherein:
  • [0013]
    FIG. 1 shows a diagram of a system in accordance with embodiments of the invention;
  • [0014]
    FIG. 2 illustrates graphically operation of a compiler and application program in accordance with embodiments of the invention;
  • [0015]
    FIG. 3 illustrates a flow diagram implemented partially within a compiler and partially within an application program compiled by the compiler, in accordance with embodiments of the invention;
  • [0016]
    FIG. 4 illustrates graphically operation of a compiler and application program in accordance with alternative embodiments of the invention;
  • [0017]
    FIG. 5 illustrates a flow diagram implemented partially within a compiler and partially within an application program compiled by the compiler, in accordance with alternative embodiments of the invention; and
  • [0018]
    FIG. 6 illustrates a system in accordance with at least some embodiments of the invention.
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • [0019]
    The following discussion is directed to various embodiments of the invention. Although one or more of these embodiments may be preferred, the embodiments disclosed should not be interpreted, or otherwise used, as limiting the scope of the disclosure, unless otherwise specified. In addition, one skilled in the art will understand that the following description has broad application, and the discussion of any embodiments is meant only to be exemplary of those embodiments, and not intended to intimate that the scope of the disclosure is limited to those embodiments.
  • [0020]
    Moreover, the various embodiments were developed in the context of processors executing Java™ bytecodes, and thus the description is related to the developmental context; however, the various embodiments find application outside the Java environment, such as Microsoft's “.NET” (pronounced “dot net”) framework or in programs written in C and C++, and thus the description in relation to a Java environment should not be construed as a limitation as to the breadth of the disclosure.
  • [0021]
    Java is a programming language that, at the source code level, is similar to object oriented programming languages such as C++. Java language source code is compiled into an intermediate representation based on a plurality hardware platform independent “bytecodes” that define specific tasks. An “opcode” is a single member of the group bytecodes. In some implementations, the bytecodes are further compiled to machine language for a particular processor. Some processors, however, are designed to execute some or all the Java bytecodes directly.
  • [0022]
    FIG. 1 shows a system 100 in accordance with embodiments of the invention. As shown, the system may comprise at least two processors 102 and 104. Processor 102 may be referred to for purposes of this disclosure as a Java Stack Machine (“JSM”) and processor 104 may be referred to as a Main Processor Unit (“MPU”). System 100 may also comprise memory 106 coupled to both the JSM 102 and MPU 104. At least a portion of the memory 106 may be shared by both processors, and if desired, other portions of the memory 106 may be designated as private to one processor or the other. System 100 also comprises a Java Virtual Machine (“JVM”) 108, compiler 110, and a display 114. The JVM 108 may comprise a class loader, bytecode verifier, garbage collector, and a bytecode interpreter loop to interpret the bytecodes that are not executed on the JSM processor 102. Other components (not specifically shown) may be used as desired for various applications.
  • [0023]
    Bytecodes 112 may be provided to the JVM 108, possibly compiled by compiler 110, and provided to the JSM 102 and/or MPU 104 for execution. In accordance with some embodiments of the invention, the JSM 102 may execute at least some Java bytecodes directly. When appropriate, however, the JVM 108 may also request the MPU 104 to execute one or more Java bytecodes not executed or executable by the JSM 102. In addition to executing compiled Java bytecodes, the MPU 104 also may execute non-Java instructions. The MPU 104 may thus also host an operating system (“O/S”) (not specifically shown) which performs various functions such as system memory management, system task management that schedules the software aspects of the JVM 108 and most or all other native tasks running on the system, management of the display 114, and receiving input from input devices (not specifically shown). Java code, whether executed on the JSM 102 or MPU 104, may be used to perform any one of a variety of applications such as multimedia, games or web based applications in the system 100, while non-Java code, which may comprise the O/S and other native applications, may still run on the system on the MPU 104.
  • [0024]
    FIG. 2 graphically illustrates operation of a compiler and an application program in accordance with embodiments of the invention. In particular, FIG. 2 illustrates a source file 200, which source file contains an application program comprising, at least in part, a method 202. The method 202 could be, for example, a subroutine of the larger application program. The application program of the source file 200 is compiled (such as by compiler 110 of FIG. 1), and the results of the compiling are placed in a destination file 204. In some embodiments the source file is human-readable source code, such as written in Java or C++. In other embodiments, the application program of the source file 200 may be code that is already at least partially compiled, such as a Java language application program compiled to bytecodes. The results of the compiling may likewise take many forms. The compiled version of the application program may be executable directly or indirectly by a processor. For example, Java language human-readable source code may be compiled to bytecodes which are directly executable by some processors (such as JSM 102), or which need further compiling to platform dependent instruction sets for processors that do not directly execute bytecodes (such as MPU 104).
  • [0025]
    Regardless of the form of the source and destination files, in accordance with embodiments of the invention the compiler inserts into the compiled version of the application program in the destination file a series of commands 206. The terms “series of commands” are used to distinguish the original method; however, the series of commands may be another method of the application program, albeit drafted by the compiler rather than the author of the source code. The series of commands 206 are generated by the compiler such that when the application program is actually executed, and in particular when the series of commands 206 as part of the application program are executed, the series of commands determine a value of a parameter which is available at runtime (and which may not have been available in a static compiling), and the series of commands generate an optimized version of the method based on the value. For example, an indirect reference both in the human-readable source code file and the compiled version of the application program may be resolved at run time, and the illustrative method may be optimized using the resolved value.
  • [0026]
    In accordance with at least some embodiments, the series of commands may be executed multiple times, and each time generate the optimized version of the method that is thereafter executed. In alternative embodiments, however, the series of commands 206 are further configured to replace themselves with the optimized method 208, thus creating a modified destination file 210. In these embodiments, the series of commands execute one time, to determine the value of interest, generate an optimized method based on that value, and overwrite the series of commands with the optimized method.
  • [0027]
    FIG. 3 illustrates a flow diagram that is implemented partially within a compiler, and partially within an application program compiled by the compiler. More particularly, FIG. 3 illustrates the operation of the compiler and modified application program as discussed with respect to FIG. 2. The process starts (block 300), and in addition to other duties of the compiler, a determination is made as to whether a method (e.g., method 202 of FIG. 2) can be optimized based on a value available at run time (block 304). If not, a determination is made as to whether other methods exist in the application program for possible optimization (block 312). If there are no further methods, the process ends (block 316). If there are further methods, however, the process starts anew with the determination of whether the next method can be optimized based on a value available at run time (again block 304).
  • [0028]
    Still referring to FIG. 3, if a method can be optimized based on a run time value, the compiler inserts a series of commands into the compiled version of the application program for generating, at run time of the application program, an optimized version of the method (block 308). Thereafter, a determination is made as to whether more methods exist for possible run time optimization (block 312). The illustrative steps of FIG. 3 discussed to this point are preferably implemented within a compiler. The remaining steps (blocks 320 and 324) are preferably implemented as part of the application program previously (wholly or partially) compiled by the compiler.
  • [0029]
    The series of commands, executed as part of the application program and not the compiler program, generate the optimized method using the value available at run time (block 320). Moreover, and in at least some embodiments, the series of commands overwrite themselves with the optimized method (block 324). In some embodiments the series of commands are overwritten only in the copy of the application program stored in volatile memory (e.g., RAM), but not in the compiled version of the application stored on a non-volatile memory (e.g., a disk drive). If the value available at run time is expected to the same each and every time the application program thereafter runs, then the series of commands may also be overwritten on non-volatile memory device.
  • [0030]
    The discussion of the various embodiments to this point has assumed that sufficient optimization of the overall application program may be achieved with an optimized method for only one run time value, and this assumption is valid in many situations. In alternative embodiments, however, an illustrative method may be optimized based on several values available at run time, and further still, the values for which the method is optimized may change over the course of the execution of the application program. FIG. 4 illustrates operation of a compiler and an application program in accordance with alternative embodiments of the invention. In particular, FIG. 4 illustrates a source file 400, which source file contains an application program comprising, at least in part, a method 402. The method 402 could be, for example, a subroutine of the larger application program. The application program of the source file 400 is compiled (such as by compiler 110 of FIG. 1), and the results of the compiling are placed in a destination file 404. Much like the embodiments discussed with respect to FIG. 2, the source file and destination may take many forms.
  • [0031]
    In accordance with these alternative embodiments, the compiler inserts into the compiled version of the destination file a series of commands 406. The series of commands 406 are generated by the compiler such that when the application program is actually executed, and in particular when the series of commands 406 as part of the application program are executed, the series of commands perform several actions. In particular, the series of commands may implement dynamic monitoring code 408 (discussed more fully below), and may also determine a value or values of parameters which are available at run time (and which may not have been available in a static compiling). Further, the series of commands 406 also generate optimized versions of the method based on the value or values determined by the dynamic monitoring code 408.
  • [0032]
    In accordance with these alternative embodiments, the dynamic monitoring code 408 runs as part of the application program, and determines which run time values are predominantly used by the method 410 (which is method 402 compiled and optimized (to the extent possible) for general data). The terms “dynamic monitoring code” are used to distinguish the original method; however, the dynamic monitoring code may be another method of the application program, albeit drafted by the compiler rather than the author of the source code. Stated otherwise, the dynamic monitoring code 408 (part of the series of commands written by the compiler) monitors a plurality of executions of the method 410, and determines which run time values are predominantly used. Based on this determination, the series of commands 406 then generate a plurality of optimized versions of the method 402/410 (e.g., first optimized method 412 and a second optimized method 414), one each for each of the predominantly used values, and writes the optimized methods to the modified destination file 416. Although not specifically shown in FIG. 4, the series of commands also write “glue” code that directs program flow to the proper optimized method based on the run time value, or if there is not an optimized method for the particular run time value, to the method 410 for general data.
  • [0033]
    In accordance with some embodiments, when a plurality of predominantly used run time values has been determined, the optimized methods overwrite the dynamic monitoring code in the modified destination file. In alternative embodiments, however, the dynamic monitoring code remains, and in the event the predominantly used run time values change over the course of executing the application program, the dynamic monitor code 408 generates new optimized methods that either replace or augment the previously generated optimized methods.
  • [0034]
    FIG. 5 illustrates a flow diagram that is implemented partially within a compiler, and partially within an application program compiled by the compiler. More particularly, FIG. 5 illustrates the operation of the compiler and modified application program as discussed with respect to FIG. 4. The process starts (block 500), and in addition to other duties of the compiler, a determination is made as to whether the method (e.g., method 402 of FIG. 4) can be optimized based on a value available at run time (block 502). If not, a determination is made as to whether other methods exist in the application program for possible optimization (block 510). If there are no further methods, the process ends (block 512). If there are further methods, however, the process starts anew with the determination of whether the next method can be optimized based on a value available at run time (again block 502).
  • [0035]
    Still referring to FIG. 5, if the method can be optimized based on a run time value, the compiler inserts a series of commands for run time monitoring of values into the compiled version of the application program (block 504). The compiler also inserts a series of commands for run time optimization of the method (block 506), and further inserts a compiled version of the method optimized (to the extent possible) for general data (block 508). Thereafter, a determination is made as to whether more methods exist for possible run time optimization (block 510). The illustrative steps discussed to this point are preferably implemented within a compiler. The remaining steps are preferably implemented as part of the application program previously (wholly or partially) compiled by the compiler.
  • [0036]
    The run time portion of the various embodiments start (block 516) with execution of the application program, and the series of commands monitor a plurality of executions of the method optimized for general data (block 518). Based on data obtained from the monitoring, a determination is made as to whether there are any predominantly used values (block 520). If there are no predominantly used values, the illustrative method retreats to further monitoring (block 518). If there are predominantly used values (again block 520), a determination is made as to whether optimized versions of the method have already been generated for those values (block 522). If so, then the illustrative method retreats again to monitoring execution of the method optimized for general data (block 518). If, on the other hand, the illustrative method has not generated an optimized method for the predominantly used values, optimized methods are generated and written to the modified destination file (block 524). In some embodiments, each method optimized for a particular value is retained, and further optimized methods added. In cases where storage space in the modified destination file is limited, each time an optimized method is generated it may overwrite other optimized versions of the method. Further still, if storage space is an issue, the dynamic monitor code may be overwritten. Stated otherwise, once one or more predominantly used values are determined, the illustrative method may no longer perform the dynamic monitoring.
  • [0037]
    System 100 may be implemented as a mobile cell phone such as that shown in FIG. 6. As shown, the mobile communication device includes an integrated keypad 612 and display 614. The JSM processor 102 and MPU processor 104 and other components may be included in electronics package 610 connected to the keypad 612, display 414, and radio frequency (“RF”) circuitry 416. The RF circuitry 416 may be connected to an antenna 418.
  • [0038]
    From the description provided herein, those skilled in the art are readily able to combine software created as described with appropriate general purpose or a special purpose computer hardware to create a computer system and/or computer subcomponents embodying aspects of the invention, to create a computer system and/or computer subcomponents for carrying out the method embodiments of the invention, and/or to create a computer-readable medium storing a software program to implement method aspects of the various embodiments. Moreover, the embodiments of the illustrative methods could be implemented together in a single program (with various subroutines), or split up into two or more programs executed on the processor.
  • [0039]
    While the various embodiments of the invention have been shown and described, modifications thereof can be made by one skilled in the art without departing from the spirit and teachings of the invention. The embodiments described herein are illustrative only, and are not intended to be limiting. Many variations and modifications of the invention disclosed herein are possible and are within the scope of the invention. For example, compiling in accordance with embodiments of the invention may take place statically (ahead-in-time) or dynamically. Each and every claim is incorporated into the specification as an embodiment of the present invention.
Patent Citations
Cited PatentFiling datePublication dateApplicantTitle
US5999732 *Mar 23, 1998Dec 7, 1999Sun Microsystems, Inc.Techniques for reducing the cost of dynamic class initialization checks in compiled code
US6530075 *Dec 3, 1998Mar 4, 2003International Business Machines CorporationJIT/compiler Java language extensions to enable field performance and serviceability
US7146607 *Sep 17, 2002Dec 5, 2006International Business Machines CorporationMethod and system for transparent dynamic optimization in a multiprocessing environment
US7194736 *Dec 10, 2002Mar 20, 2007Intel CorporationDynamic division optimization for a just-in-time compiler
US20030093780 *Nov 13, 2001May 15, 2003Freudenberger Stefan M.Annotations to executable images for improved dynamic optimization of functions
US20040054994 *Sep 17, 2002Mar 18, 2004Microsoft CorporationSystem and method for persisting dynamically generated code in a directly addressable and executable storage medium
Referenced by
Citing PatentFiling datePublication dateApplicantTitle
US7643818Nov 21, 2005Jan 5, 2010Seven Networks, Inc.E-mail messaging to/from a mobile terminal
US7769400Aug 11, 2008Aug 3, 2010Seven Networks International OyConnectivity function for forwarding e-mail
US7904101Mar 8, 2011Seven Networks International OyNetwork-initiated data transfer in a mobile network
US8010082Oct 19, 2005Aug 30, 2011Seven Networks, Inc.Flexible billing architecture
US8064583Sep 21, 2006Nov 22, 2011Seven Networks, Inc.Multiple data store authentication
US8069166Feb 27, 2006Nov 29, 2011Seven Networks, Inc.Managing user-to-user contact with inferred presence information
US8069440 *Oct 27, 2006Nov 29, 2011Oracle America, Inc.Adaptive code through self steered execution
US8078158Jun 26, 2008Dec 13, 2011Seven Networks, Inc.Provisioning applications for a mobile device
US8107921Jan 11, 2008Jan 31, 2012Seven Networks, Inc.Mobile virtual network operator
US8116214Nov 30, 2005Feb 14, 2012Seven Networks, Inc.Provisioning of e-mail settings for a mobile terminal
US8127342Sep 23, 2010Feb 28, 2012Seven Networks, Inc.Secure end-to-end transport through intermediary nodes
US8166164Oct 14, 2011Apr 24, 2012Seven Networks, Inc.Application and network-based long poll request detection and cacheability assessment therefor
US8190701Nov 1, 2011May 29, 2012Seven Networks, Inc.Cache defeat detection and caching of content addressed by identifiers intended to defeat cache
US8204953Nov 1, 2011Jun 19, 2012Seven Networks, Inc.Distributed system for cache defeat detection and caching of content addressed by identifiers intended to defeat cache
US8209709Jul 5, 2010Jun 26, 2012Seven Networks, Inc.Cross-platform event engine
US8291076Mar 5, 2012Oct 16, 2012Seven Networks, Inc.Application and network-based long poll request detection and cacheability assessment therefor
US8316098Nov 20, 2012Seven Networks Inc.Social caching for device resource sharing and management
US8326985Nov 1, 2011Dec 4, 2012Seven Networks, Inc.Distributed management of keep-alive message signaling for mobile network resource conservation and optimization
US8356080Jan 15, 2013Seven Networks, Inc.System and method for a mobile device to use physical storage of another device for caching
US8359587May 1, 2008Jan 22, 2013Oracle America, Inc.Runtime profitability control for speculative automatic parallelization
US8364181Dec 10, 2007Jan 29, 2013Seven Networks, Inc.Electronic-mail filtering for mobile devices
US8412675Feb 24, 2006Apr 2, 2013Seven Networks, Inc.Context aware data presentation
US8417823Nov 18, 2011Apr 9, 2013Seven Network, Inc.Aligning data transfer to optimize connections established for transmission over a wireless network
US8438633Dec 18, 2006May 7, 2013Seven Networks, Inc.Flexible real-time inbox access
US8468126Dec 14, 2005Jun 18, 2013Seven Networks, Inc.Publishing data in an information community
US8484314Oct 14, 2011Jul 9, 2013Seven Networks, Inc.Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
US8494510Dec 6, 2011Jul 23, 2013Seven Networks, Inc.Provisioning applications for a mobile device
US8528001Dec 15, 2008Sep 3, 2013Oracle America, Inc.Controlling and dynamically varying automatic parallelization
US8539040Feb 28, 2012Sep 17, 2013Seven Networks, Inc.Mobile network background traffic data management with optimized polling intervals
US8549587Feb 14, 2012Oct 1, 2013Seven Networks, Inc.Secure end-to-end transport through intermediary nodes
US8561046Sep 14, 2009Oct 15, 2013Oracle America, Inc.Pipelined parallelization with localized self-helper threading
US8561086May 17, 2012Oct 15, 2013Seven Networks, Inc.System and method for executing commands that are non-native to the native environment of a mobile device
US8612929Dec 10, 2008Dec 17, 2013Oracle America, Inc.Compiler implementation of lock/unlock using hardware transactional memory
US8621075Apr 27, 2012Dec 31, 2013Seven Metworks, Inc.Detecting and preserving state for satisfying application requests in a distributed proxy and cache system
US8635339Aug 22, 2012Jan 21, 2014Seven Networks, Inc.Cache state management on a mobile device to preserve user experience
US8677337May 1, 2008Mar 18, 2014Oracle America, Inc.Static profitability control for speculative automatic parallelization
US8693494Mar 31, 2008Apr 8, 2014Seven Networks, Inc.Polling
US8700728May 17, 2012Apr 15, 2014Seven Networks, Inc.Cache defeat detection and caching of content addressed by identifiers intended to defeat cache
US8738050Jan 7, 2013May 27, 2014Seven Networks, Inc.Electronic-mail filtering for mobile devices
US8739141May 19, 2008May 27, 2014Oracle America, Inc.Parallelizing non-countable loops with hardware transactional memory
US8750123Jul 31, 2013Jun 10, 2014Seven Networks, Inc.Mobile device equipped with mobile network congestion recognition to make intelligent decisions regarding connecting to an operator network
US8761756Sep 13, 2012Jun 24, 2014Seven Networks International OyMaintaining an IP connection in a mobile network
US8774844Apr 8, 2011Jul 8, 2014Seven Networks, Inc.Integrated messaging
US8775631Feb 25, 2013Jul 8, 2014Seven Networks, Inc.Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications
US8782222Sep 5, 2012Jul 15, 2014Seven NetworksTiming of keep-alive messages used in a system for mobile network resource conservation and optimization
US8787947Jun 18, 2008Jul 22, 2014Seven Networks, Inc.Application discovery on mobile devices
US8793305Dec 13, 2007Jul 29, 2014Seven Networks, Inc.Content delivery to a mobile device from a content service
US8799410Apr 13, 2011Aug 5, 2014Seven Networks, Inc.System and method of a relay server for managing communications and notification between a mobile device and a web access server
US8805334Sep 5, 2008Aug 12, 2014Seven Networks, Inc.Maintaining mobile terminal information for secure communications
US8805425Jan 28, 2009Aug 12, 2014Seven Networks, Inc.Integrated messaging
US8811952May 5, 2011Aug 19, 2014Seven Networks, Inc.Mobile device power management in data synchronization over a mobile network with or without a trigger notification
US8812695Apr 3, 2013Aug 19, 2014Seven Networks, Inc.Method and system for management of a virtual network connection without heartbeat messages
US8831561Apr 28, 2011Sep 9, 2014Seven Networks, IncSystem and method for tracking billing events in a mobile wireless network for a network operator
US8832228Apr 26, 2012Sep 9, 2014Seven Networks, Inc.System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief
US8838744Jan 28, 2009Sep 16, 2014Seven Networks, Inc.Web-based access to data objects
US8838783Jul 5, 2011Sep 16, 2014Seven Networks, Inc.Distributed caching for resource and mobile network traffic management
US8839412Sep 13, 2012Sep 16, 2014Seven Networks, Inc.Flexible real-time inbox access
US8843153Nov 1, 2011Sep 23, 2014Seven Networks, Inc.Mobile traffic categorization and policy for network use optimization while preserving user experience
US8849902Jun 24, 2011Sep 30, 2014Seven Networks, Inc.System for providing policy based content service in a mobile network
US8861354Dec 14, 2012Oct 14, 2014Seven Networks, Inc.Hierarchies and categories for management and deployment of policies for distributed wireless traffic optimization
US8862657Jan 25, 2008Oct 14, 2014Seven Networks, Inc.Policy based content service
US8868753Dec 6, 2012Oct 21, 2014Seven Networks, Inc.System of redundantly clustered machines to provide failover mechanisms for mobile traffic management and network resource conservation
US8873411Jan 12, 2012Oct 28, 2014Seven Networks, Inc.Provisioning of e-mail settings for a mobile terminal
US8874761Mar 15, 2013Oct 28, 2014Seven Networks, Inc.Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
US8886176Jul 22, 2011Nov 11, 2014Seven Networks, Inc.Mobile application traffic optimization
US8903954Nov 22, 2011Dec 2, 2014Seven Networks, Inc.Optimization of resource polling intervals to satisfy mobile device requests
US8909192Aug 11, 2011Dec 9, 2014Seven Networks, Inc.Mobile virtual network operator
US8909202Jan 7, 2013Dec 9, 2014Seven Networks, Inc.Detection and management of user interactions with foreground applications on a mobile device in distributed caching
US8909759Oct 12, 2009Dec 9, 2014Seven Networks, Inc.Bandwidth measurement
US8914002Aug 11, 2011Dec 16, 2014Seven Networks, Inc.System and method for providing a network service in a distributed fashion to a mobile device
US8918503Aug 28, 2012Dec 23, 2014Seven Networks, Inc.Optimization of mobile traffic directed to private networks and operator configurability thereof
US8966066Oct 12, 2012Feb 24, 2015Seven Networks, Inc.Application and network-based long poll request detection and cacheability assessment therefor
US8977755Dec 6, 2012Mar 10, 2015Seven Networks, Inc.Mobile device and method to utilize the failover mechanism for fault tolerance provided for mobile traffic management and network/device resource conservation
US8984581Jul 11, 2012Mar 17, 2015Seven Networks, Inc.Monitoring mobile application activities for malicious traffic on a mobile device
US8989728Sep 7, 2006Mar 24, 2015Seven Networks, Inc.Connection architecture for a mobile network
US9002828Jan 2, 2009Apr 7, 2015Seven Networks, Inc.Predictive content delivery
US9009250Dec 7, 2012Apr 14, 2015Seven Networks, Inc.Flexible and dynamic integration schemas of a traffic management system with various network operators for network traffic alleviation
US9009692Dec 26, 2009Apr 14, 2015Oracle America, Inc.Minimizing register spills by using register moves
US9021021Dec 10, 2012Apr 28, 2015Seven Networks, Inc.Mobile network reporting and usage analytics system and method aggregated using a distributed traffic optimization system
US9043433May 25, 2011May 26, 2015Seven Networks, Inc.Mobile network traffic coordination across multiple applications
US9043731Mar 30, 2011May 26, 2015Seven Networks, Inc.3D mobile user interface with configurable workspace management
US9047142Dec 16, 2010Jun 2, 2015Seven Networks, Inc.Intelligent rendering of information in a limited display environment
US9049179Jan 20, 2012Jun 2, 2015Seven Networks, Inc.Mobile network traffic coordination across multiple applications
US9055102Aug 2, 2010Jun 9, 2015Seven Networks, Inc.Location-based operations and messaging
US9060032May 9, 2012Jun 16, 2015Seven Networks, Inc.Selective data compression by a distributed traffic management system to reduce mobile data traffic and signaling traffic
US9065765Oct 8, 2013Jun 23, 2015Seven Networks, Inc.Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
US9077630Jul 8, 2011Jul 7, 2015Seven Networks, Inc.Distributed implementation of dynamic wireless traffic policy
US9084105Apr 19, 2012Jul 14, 2015Seven Networks, Inc.Device resources sharing for network resource conservation
US9100873Sep 14, 2012Aug 4, 2015Seven Networks, Inc.Mobile network background traffic data management
US9131397Jun 6, 2013Sep 8, 2015Seven Networks, Inc.Managing cache to prevent overloading of a wireless network due to user activity
US9161258Mar 15, 2013Oct 13, 2015Seven Networks, LlcOptimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion
US9173128Mar 6, 2013Oct 27, 2015Seven Networks, LlcRadio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol
US9203864Feb 4, 2013Dec 1, 2015Seven Networks, LlcDynamic categorization of applications for network access in a mobile network
US9208123Dec 7, 2012Dec 8, 2015Seven Networks, LlcMobile device having content caching mechanisms integrated with a network operator for traffic alleviation in a wireless network and methods therefor
US9239800Jul 11, 2012Jan 19, 2016Seven Networks, LlcAutomatic generation and distribution of policy information regarding malicious mobile traffic in a wireless network
US9241314Mar 15, 2013Jan 19, 2016Seven Networks, LlcMobile device with application or context aware fast dormancy
US9251193Oct 28, 2007Feb 2, 2016Seven Networks, LlcExtending user relationships
US20060149794 *Dec 8, 2005Jul 6, 2006Seven Networks International OyDatabase synchronization
US20060184591 *Dec 28, 2005Aug 17, 2006Seven Networks International OyDatabase synchronization via a mobile network
US20060240805 *Nov 21, 2005Oct 26, 2006Seven Networks International OyE-mail messaging to/from a mobile terminal
US20070019611 *Jun 21, 2006Jan 25, 2007Seven Networks International OyNetwork-initiated data transfer in a mobile network
US20080001717 *Mar 27, 2007Jan 3, 2008Trevor FiatalSystem and method for group management
US20080127134 *Oct 27, 2006May 29, 2008Sun Microsystems, Inc.Adaptive code through self steered execution
US20080133708 *Oct 28, 2007Jun 5, 2008Billy AlvaradoContext Based Action
US20080141268 *Dec 12, 2006Jun 12, 2008Tirumalai Partha PUtility function execution using scout threads
US20090075683 *Aug 11, 2008Mar 19, 2009Seven Networks International OyConnectivity function for forwarding e-mail
US20090276758 *May 1, 2008Nov 5, 2009Yonghong SongStatic profitability control for speculative automatic parallelization
US20090276766 *May 1, 2008Nov 5, 2009Yonghong SongRuntime profitability control for speculative automatic parallelization
US20090288075 *Nov 19, 2009Yonghong SongParallelizing non-countable loops with hardware transactional memory
US20100146480 *Dec 10, 2008Jun 10, 2010Spiros KalogeropulosCompiler implementation of lock/unlock using hardware transactional memory
US20100153959 *Dec 15, 2008Jun 17, 2010Yonghong SongControlling and dynamically varying automatic parallelization
US20110067014 *Mar 17, 2011Yonghong SongPipelined parallelization with localized self-helper threading
US20110161945 *Dec 26, 2009Jun 30, 2011Spiros KalogeropulosMinimizing Register Spills by Using Register Moves
USRE45348Mar 16, 2012Jan 20, 2015Seven Networks, Inc.Method and apparatus for intercepting events in a communication system
Classifications
U.S. Classification717/151, 711/E12.067
International ClassificationG06F9/45
Cooperative ClassificationG06F9/45504, G06F2212/6012, G06F12/1081, Y02B60/1225, G06F12/0802, G06F9/30174
European ClassificationG06F9/30U2, G06F12/10P
Legal Events
DateCodeEventDescription
Jul 26, 2005ASAssignment
Owner name: TEXAS INSTRUMENTS INCORPORATED, TEXAS
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CABILLIC, GILBERT;PELTIER, MIKAEL;LESOT, JEAN-PHILIPPE;REEL/FRAME:016821/0389;SIGNING DATES FROM 20050718 TO 20050725