EP2588953A1 - Selektives kompilierungsverfahren, vorrichtung und entsprechendes computerprogrammprodukt - Google Patents

Selektives kompilierungsverfahren, vorrichtung und entsprechendes computerprogrammprodukt

Info

Publication number
EP2588953A1
EP2588953A1 EP11728266.5A EP11728266A EP2588953A1 EP 2588953 A1 EP2588953 A1 EP 2588953A1 EP 11728266 A EP11728266 A EP 11728266A EP 2588953 A1 EP2588953 A1 EP 2588953A1
Authority
EP
European Patent Office
Prior art keywords
code
compiled
codes
virtual machine
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP11728266.5A
Other languages
English (en)
French (fr)
Inventor
Gilbert Cabillic
Jean-Philippe Lesot
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Flexycore SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Flexycore SAS filed Critical Flexycore SAS
Publication of EP2588953A1 publication Critical patent/EP2588953A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Definitions

  • the present invention relates to the field of compilation of programs or software applications.
  • the present invention relates more particularly to the compilation of programs or software applications in heterogeneous environments.
  • a computer program, or a software application is generally composed of a set of binary or intermediate instructions said executable.
  • These executable instructions are usually derived from a compilation of a program written in a source language.
  • a developer writes a source program written in a specific programming language.
  • This source program is then compiled to form an executable program.
  • the instructions written in source language are transformed into a binary program which is itself executed on a hardware platform such as a computer, a communication terminal.
  • Figure 1 describes the general principle of a virtual machine-based code execution technique.
  • the source code 100 is compiled to an intermediate code 102 by the compiler 101.
  • This code is then executed on a virtual machine 103, itself running on the operating system 104, itself running on a platform 105. Since the intermediate code must be able to run on any platform with a virtual machine adapted to the intermediate code, it is not optimized.
  • the first technique is to compile the intermediate code dynamically. It is referred to as dynamic compilation.
  • the virtual machine includes a compiler capable of dynamically compiling intermediate bits of code into binary, and also includes a mechanism for dynamically executing the binary code generated by this compiler in place of the original intermediate code.
  • the execution of the application consists of a mixture of intermediate code and dynamically generated binary code.
  • JIT just in time
  • DAC dynamic adaptive compiler
  • Just In Time usually has a compilation granularity to the method (it can only compile entire methods). It carries out the compilation in binary code of the method to be executed during the first execution of the method.
  • the dynamic adaptive compiler implements another strategy. It executes the application by the virtual machine and dynamically determines the parts of code penalizing the performance of the application. These parts are called hot spots of the application.
  • Each DAC has its own hotspot detection strategy. For example, the most frequently executed methods, or methods that include loops, or methods that take the most time to execute. Once this identification is made, it compiles hot spots in binary code. Then, the virtual machine executes the binary code of the hotspots.
  • a source software application (100) is written by an application developer.
  • This source program includes computer program instructions written in a source programming language.
  • the source program (100) undergoes a first compilation phase by a compiler (101) which results in its transformation into an intermediate program (102).
  • This intermediate program (102) is executed by a virtual machine (103) that runs over a binary operating system (104), which is based on a hardware platform (105).
  • the virtual machine (103) is coupled to a dynamic compiler (106) that dynamically determines and compiles bit code intermediate code portions within a binary code buffer (107).
  • the virtual machine (103) also includes means for executing a binary version of an intermediate code, if it exists, in order to increase the performance of the application.
  • a dynamic compiler takes time to execute in addition to the application both to determine hotspots, and when compiling the intermediate code in binary code. Indeed, to realize the identification of the hot spots, an instrumentation of the interpreter of the virtual machine is usually performed in order to monitor the behavior of the application. These instrumentations penalize the performance of the application. Concerning the compiler, in order to limit their compilation time, the optimizations realized by these compilers are simple and can not be aggressive. This will limit the performance of the generated binary code compared to a compiler that runs upstream of the execution. Then, these solutions use temporary memory to store the generated binary codes.
  • this code is stored in a limited memory area, and the compiler must therefore make continuous choices to determine which are the correct binary codes to keep in this buffer. This results in a performance problem of these dynamic compilers as they manage many applications, or the size of this memory area is small.
  • the second technique of optimizing the performance of the intermediate code is to make the virtual machine faster on the chosen target. This optimization can be done by optimizing the virtual machine so that it exploits as much as possible the capabilities of the processor that uses it. It can also be done through additional specific hardware support. It can also be achieved by the specific algorithm design to increase the performance of the virtual machine on the target.
  • the invention does not include these disadvantages of the prior art. Indeed, the invention relates to a method of compiling a software application intended to execute within a virtual machine of a hardware platform, said software application originally being in the form of a set of compile.
  • such a method comprises a phase of selective compilation of said set of codes to compile delivering a compiled application comprising a first application part executed by said virtual machine by using instructions from said virtual machine and a second application part comprising binary instructions. directly executable on said hardware platform.
  • the invention makes it possible to optimize the performance of the applications by producing, from a single set of codes, an application consisting of an application part executed by said virtual machine and an application part executed directly by the hardware platform, without using the interpreter of the virtual machine.
  • the set of codes to compile consists of files that are written in a single language.
  • said set of codes to be compiled is a set of intermediate codes and in that said method comprises a first phase of compiling a set of source codes and delivering said set of intermediate codes used during said phase. selective compilation.
  • the invention makes it possible to directly optimize an intermediate code, which has already been the subject of a first compilation, to optimize the execution of this intermediate code.
  • said set of codes to be compiled is a set of source codes written in a programming language.
  • said selective compilation phase comprises:
  • said selective compilation phase furthermore comprises:
  • said method further comprises, during said step of compiling said second subset of source code to be compiled, a step of introducing at least one interfacing structure of said second application part with said virtual machine.
  • This data structure may for example a JNI type interface ("Java Native Interface").
  • this interfacing structure may be a particular structure for making a link with an internal interface, more efficient, of the virtual machine.
  • said set of codes to be compiled is a set of Java "ByteCode”.
  • said set of codes to be compiled is a set of "ByteCode” Dalvik.
  • said set of codes to be compiled is a set of Java codes.
  • said method is implemented prior to an execution of said software application within said virtual machine.
  • the invention also relates to a device for compiling a software application intended to execute within a virtual machine of a hardware platform, said software application originally being in the form of a set of codes to compile.
  • a device for compiling a software application intended to execute within a virtual machine of a hardware platform, said software application originally being in the form of a set of codes to compile.
  • such a device comprises means of selective compilation of said set of codes to compile delivering a compiled application comprising a first application part executed by said virtual machine by using instructions from said virtual machine and a second application part comprising binary instructions. directly executable on said hardware platform.
  • the invention also relates to a computer program comprising program code instructions for implementing the navigation method as described above, when this program is executed by a processor.
  • the invention provides a new and inventive solution to these problems of the prior art. Indeed, the invention proposes a method of automatically and selectively compiling a code written in a source programming language. or intermediate to generate a binary code of the selected parts that can be executed by a virtual machine.
  • This virtual machine can complementarily run a dynamic compiler that will compile the intermediate code remaining to run.
  • the invention is based on a completely new and inventive approach to compiling software applications for virtual machine-based environments.
  • the invention allows the developer to choose precisely what he wants to compile in order to keep control of the use of offline compilation. It also allows to combine the offline compilation approaches and the dynamic compilation approach, with the aim of providing a better performance of execution
  • Figure 4 is a block diagram of a compilation device according to the invention.
  • the general principle of the invention lies in the combination of a static approach to the compilation, making it possible to create applications optimized computing by performing a compilation (prior to the execution of the application) while maintaining an execution based on the implementation of virtual machines.
  • a compilation prior to the execution of the application
  • an execution based on the implementation of virtual machines one of the problems of applications that work with virtual machines.
  • one of the problems of applications that work with virtual machines is performance.
  • the principle behind the use of virtual machines is to allow portability of the intermediate code (from one or more source code compilations) on any hardware platform having a virtual machine capable of executing the virtual code. intermediate code in question.
  • the invention thus relates to a compilation technique for virtual machine-based runtime environments that provides a better performance of execution.
  • the principle of improving performance relies on moving the execution of some parts of intermediate code in the form of binary code much more powerful, while remaining under the control of execution of the application by the target virtual machine.
  • the compilation is based on the source (or intermediate) code of the application.
  • the compiler performs code generation comprising two parts: a first set of intermediate code that executes by implementing the virtual machine and a second set of binary code that executes directly by the processor of the hardware platform.
  • Figure 3 describes the principle of the invention.
  • the invention allows the developer to select (101) from a source code or an intermediate code 100 the code parts to compile in binary code.
  • the compiler 102 generates the codes (103, 104, 106 and 107) for executing the code portions chosen by the developer in binary code.
  • the generated codes (103, 104, 106 and 107) will be executed by the virtual machine 105, thanks to its binary code execution support 1 16.
  • the virtual machine runs over the operating system 108 , itself running on a hardware platform 109.
  • the invention allows the developer to choose the pieces of source code to perform with great performance, without additional manual integration operation.
  • the integration to the virtual machine is transparent. There is no modification of the virtual machine.
  • the performance of the final code depends on the binary code execution support of the virtual machine.
  • the integration is compatible with a dynamic compilation solution of a virtual machine. This integration makes it possible to cumulate the performances.
  • the binary code can be loaded dynamically, or embedded according to the possibilities of the virtual machine.
  • the invention also makes it possible to have different granularities of compilation: method, application, service, APIs, or piece of code.
  • the fact of having different granularities of compilation makes it possible to precisely target the parts of code to be accelerated according to the cases.
  • the compilation method of the invention is implemented prior to the execution of the application on the platform. Having no resource constraints, the compiler can thus use aggressive optimizations very advanced to generate the binary code or intermediate code that will further improve the performance of the application.
  • a set of specific codes linking the two sets is integrated with the two sets of codes generated using a native interface of the virtual machine.
  • the use of a native interface positively impacts the degree of performance improvement obtained (depending on the interface used).
  • the compiler uses one of the native interfaces available by the virtual machine.
  • this native interface can be either the standard native interface of the virtual machine to link with native libraries (for example a JNI interface), or one of the most powerful internal interfaces.
  • the dependence between the binary application part and the virtual machine lies in the native interface of the latter. Sometimes this native interface does not need to be modified, sometimes it has to be modified to get the desired performance improvement.
  • the compilation method since the compilation method relies on one of the native interfaces of the virtual machine, it makes it possible to keep the object system of the target virtual machine without having to modify it.
  • this interfacing structure is in one particular embodiment one or more global variables of the binary application part.
  • a global variable includes a pointer that points to an address (in memory) for accessing objects or data structures managed by the virtual machine for the application.
  • Another example is when compiling to obtain the set of binary codes, to introduce in it another set of referencing instructions allowing, during the execution of the application, to create an interfacing structure to an array of referencing objects used by the binary application part.
  • This object referencing table is part of the data that is managed by the application part. Indeed, during the execution of the application, the objects being shared between the virtual machine and the binary application part, it is necessary that the latter knows the objects that are used by the binary application part to prevent the "garbage" collector "of the virtual machine does not delete objects used by the binary application part. It is therefore necessary that the virtual machine can get acquainted with the objects used by the binary application part within the memory space allocated to the application part.
  • the addition, during the generation of code sets, referencing structures allows the virtual machine to ensure that it does not delete objects used by the binary part.
  • the use of a second object system making it possible to execute the binary code without having to use the native interface of the virtual machine is also possible in order to improve performance even more.
  • the quasi-totality of an application can be compiled into binary code by using a specific object system.
  • the set of intermediate codes generated is minimal and allows the virtual machine to perform the minimum of operation required to execute the application such as launching, terminating or suspending the execution of the application on the terminal.
  • the basis of the method of compiling a set of source or intermediate code into two sets of codes is automatic.
  • the entire process can be completely automatic, or include complementary manual phases.
  • the binary code occupies a more important place in memory than the intermediate code. Indeed, it is intended to take into account the memory size constraints of the terminal.
  • the method allows, in at least one embodiment, to select the code parts to be compiled.
  • the developer of the application masters the code expansion in view of the memory constraints of the target terminal.
  • the compiler can also decide for itself the cutting of the codes to be performed using a particular optimization that makes it possible to achieve a memory / performance expansion compromise automatically.
  • the method is compatible with an interpreted target virtual machine.
  • This virtual machine can also have a dynamic compiler that will improve the performance of the intermediate code.
  • the performance improvements are cumulative (initial with the method of the invention and dynamic with the dynamic compiler).
  • the method is not restricted to applications and can be used for source or intermediate code of an application, service or library to be executed by the virtual machine.
  • the method can be used on all code sets of an application, or a particular code portion, without granularity limit (a class, a method, or a piece of code of a method ).
  • the implementation of the invention is presented for an Android TM runtime environment.
  • Google's Android TM runtime environment is based on a Linux TM operating system distribution that includes libraries, a virtual machine called Dalvik TM, and intermediate code. This intermediate code includes applications, system services and embedded libraries on the platform. Source codes for applications, services and libraries are written in JAVA TM and compiled into Dalvik TM intermediate code.
  • the particularity of Android TM is that it is adapted to the operation of light terminals with, compared to current personal computers, low execution capabilities.
  • the Dalvik TM virtual machine has the particularity of being based on a "register-based virtual machines” architecture unlike other virtual machines that are called “stack” (from the "register-based virtual machines”). stack based virtual machines).
  • stack-based virtual machines must use the instructions to load data on the stack and manipulate the data, and therefore require more instructions than "register” machines to implement code at the same level, but the instructions in a "register” machine must encode the source and destination registers and, therefore, tend to be larger.
  • the compilation chain of Andro ⁇ d TM for the Java language compiles intermediate code java code using two compilers. The first compiles java source code into Java intermediate code (ByteCode Java). The second compiles the java intermediate code (ByteCode Java) into Dalvik intermediate code (.dex file). So we have a chain of two successive compilations to come up with an executable code ".dex" on an Andro ⁇ d TM platform from a source code written in java. In the Android TM platform, to improve performance, the implementation of the invention is as follows:
  • the initial java source code CSj is compiled using the java compiler of the Android TM platform to produce a first set of intermediate code (ByteCode Java) Clj, which is, in this embodiment, the code to be compiled.
  • the intermediate code Clj is compiled selectively to obtain two distinct sets of code: a first set of source code C / C ++ CSc l and a second set of intermediate code Clj 2.
  • the second set of intermediate code CIj2 is compiled into Dalvik TM intermediate code using the compiler available in the Andro ⁇ d TM compilation chain in order to produce the ".dex" application executable on the platform via the Dalvik TM virtual machine.
  • the first set of CScl source code including C / C ++ code
  • the first set of CScl source code is compiled using the C / C ++ compiler available in the Android TM compilation chain to generate binary code that is in the form of dynamic libraries Linux TM, to produce the second part of the application.
  • JNI Java Native Interface
  • framework development framework
  • Java Byte Code running inside a java virtual machine. call (and be called) by so-called native applications or libraries running in binary code.
  • This JNI interface is widely used in Java environments. Also, in order to link the execution of the two types of codes generated (on the one hand the Dalvik TM code and on the other hand the Linux TM dynamic libraries, the compiler of the invention adds specific JNI codes allowing to execute the two parts. Thus, the invention makes it possible to compile Java parts in native code, while keeping intermediate code parts, while linking the execution of the two parts of the application using the Dalvik TM JNI interface. .
  • Another implementation of the invention may also consist in using the internal native interface of the Dalvik TM virtual machine to avoid the use of the JNI interface, which itself may pose some performance problems.
  • the Dalvik TM virtual machine remains master of the execution and its object execution model remains preserved and used to execute the application.
  • This object execution model is in charge of the management of fields, methods, associated memory.
  • the invention thus makes it possible to benefit from a high-performance binary code that executes within the virtual machine.
  • Each processor of the hardware platform has an associated memory architecture. This can be composed of several levels of memory cache, specific memory (direct access, ROM, ...), additional RAM or flash, different timing frequencies.
  • the performance of the processor will be a function of the location of the instructions and data of an application in its memory hierarchy.
  • the processor makes it possible to have two memory access channels in parallel. One for the instructions, the other for the data. These two channels are also optimized and calibrated according to the distribution of instructions and data access.
  • the intermediate code is considered to be data. Also, all the memory accesses pass through the same channel, which penalizes the operation of the memory architecture and impacts the execution performance.
  • Dynamic compilers generate binary code that can be loaded by the instruction channel. Also, they allow to use both channels memory access in parallel. However, this binary code is in a RAM, preventing the use of ROM, resident near the processor.
  • the compiler can execute upstream of the integration of the terminal, the binary code can be placed in a read-only memory close to the processor. This allows :
  • the invention is in the form of a device capable of implementing the compilation method as described above. Such a device is schematically described in relation to FIG. 4.
  • the processing unit 42 receives as input, via an input interface module I, a set of codes to be compiled, which the microprocessor processes, according to the instructions of the aforementioned program, to generate an application composed of two parts. This two-part application is delivered via the T interface.
  • the device comprises means of selective compilation of the set of codes to compile delivering a compiled application comprising a first application part executed by said virtual machine by using instructions of said virtual machine and a second application part comprising binary instructions directly executable on said hardware platform.
  • the selective compilation means comprise means for selecting the subsets of codes to be compiled. These selection means are either implemented manually or implemented automatically. An automatic implementation of the selection may be performed by a code pre-analysis device 43 for identifying those portions of code for which optimization and / or binary execution is preferable.
  • the selective compilation means furthermore comprise at least two compilation devices which make it possible on the one hand to generate the first part of the application, which is executed by the virtual machine and the second part of the application, which is executed directly. by the operating system of the hardware platform.
  • These two compilation devices can be complemented by other devices, such as other compilers, linkers, or optimizers.
EP11728266.5A 2010-06-29 2011-06-27 Selektives kompilierungsverfahren, vorrichtung und entsprechendes computerprogrammprodukt Withdrawn EP2588953A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1055261A FR2961922B1 (fr) 2010-06-29 2010-06-29 Procede de compilation selective, dispositif et produit programme d'ordinateur correspondant.
PCT/EP2011/060748 WO2012000949A1 (fr) 2010-06-29 2011-06-27 Procédé de compilation sélective, dispositif et produit programme d'ordinateur correspondant

Publications (1)

Publication Number Publication Date
EP2588953A1 true EP2588953A1 (de) 2013-05-08

Family

ID=43465985

Family Applications (1)

Application Number Title Priority Date Filing Date
EP11728266.5A Withdrawn EP2588953A1 (de) 2010-06-29 2011-06-27 Selektives kompilierungsverfahren, vorrichtung und entsprechendes computerprogrammprodukt

Country Status (4)

Country Link
US (2) US9535672B2 (de)
EP (1) EP2588953A1 (de)
FR (1) FR2961922B1 (de)
WO (1) WO2012000949A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8813048B2 (en) * 2009-05-11 2014-08-19 Accenture Global Services Limited Single code set applications executing in a multiple platform system
US9430200B1 (en) 2015-06-04 2016-08-30 Microsoft Technology Licensing Llc Cross-library framework architecture feature sets
US10120664B2 (en) 2015-08-28 2018-11-06 International Business Machines Corporation Incremental build generation
CN109445772B (zh) * 2018-12-29 2022-05-24 山东劳动职业技术学院(山东劳动技师学院) 一种面向智能手机的软件应用框架及其开发系统
US10956137B2 (en) 2019-06-10 2021-03-23 International Business Machines Corporation Compiling source code using source code transformations selected using benchmark data
CN110275713A (zh) * 2019-07-02 2019-09-24 四川长虹电器股份有限公司 一种Java虚拟机后端编译的改进方法
US11397568B2 (en) * 2019-12-10 2022-07-26 International Business Machines Corporation Escape analysis support for method redefinition
US11194554B2 (en) * 2020-04-28 2021-12-07 International Business Machines Corporation Efficient quantum adaptive execution method for quantum circuits
CN115495086A (zh) * 2022-08-31 2022-12-20 蚂蚁区块链科技(上海)有限公司 一种编译方法和编译器、Wasm虚拟机

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US653156A (en) * 1899-07-25 1900-07-03 Elliott Toxey Apparatus for transmitting sounds.
US3859636A (en) * 1973-03-22 1975-01-07 Bell Telephone Labor Inc Microprogram controlled data processor for executing microprogram instructions from microprogram memory or main memory
JPS61182160A (ja) * 1985-02-06 1986-08-14 Toshiba Corp デ−タ処理装置
GB2283596B (en) * 1993-11-01 1998-07-01 Ericsson Ge Mobile Communicat Multiprocessor data memory sharing
JP2738365B2 (ja) * 1995-10-18 1998-04-08 日本電気株式会社 マイクロコンピュータ用プログラム変換方法及びそのプログラムを用いたマイクロコンピュータ
US6321323B1 (en) * 1997-06-27 2001-11-20 Sun Microsystems, Inc. System and method for executing platform-independent code on a co-processor
US6513156B2 (en) * 1997-06-30 2003-01-28 Sun Microsystems, Inc. Interpreting functions utilizing a hybrid of virtual and native machine instructions
US6163836A (en) * 1997-08-01 2000-12-19 Micron Technology, Inc. Processor with programmable addressing modes
US6141732A (en) * 1998-03-24 2000-10-31 Novell, Inc. Burst-loading of instructions into processor cache by execution of linked jump instructions embedded in cache line size blocks
US6289506B1 (en) * 1998-06-30 2001-09-11 Intel Corporation Method for optimizing Java performance using precompiled code
US6253215B1 (en) * 1998-08-17 2001-06-26 Sun Microsystems Method, apparatus, and article of manufacture for facilitating resource management for applications having two types of program code
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6295643B1 (en) * 1998-12-10 2001-09-25 International Business Machines Corporation Method and apparatus for improving java virtual machine performance using persistent execution information
US6629113B1 (en) * 1999-06-30 2003-09-30 International Business Machines Corporation Method and system for dynamically adjustable and configurable garbage collector
US6295642B1 (en) * 1999-04-29 2001-09-25 International Business Machines Corporation Method and apparatus for partial just in time compiling in a data processing system
US6851109B1 (en) * 1999-05-06 2005-02-01 International Business Machines Corporation Process and system for dynamically compiling a partially interpreted method
US6754828B1 (en) * 1999-07-13 2004-06-22 Intel Corporation Algorithm for non-volatile memory updates
US6484188B1 (en) * 1999-12-30 2002-11-19 Intel Corporation Optimization of garbage collection code in the context of raw native interface function calls in the java programming language
EP1211598A1 (de) * 2000-11-29 2002-06-05 Texas Instruments Incorporated Datenverarbeitungsvorrichtung, System und Verfahren
US7213240B2 (en) * 2001-10-05 2007-05-01 Sun Microsystems, Inc. Platform-independent selective ahead-of-time compilation
US7150012B2 (en) * 2002-10-15 2006-12-12 Nokia Corporation Method and apparatus for accelerating program execution in platform-independent virtual machines
AU2002363920A1 (en) * 2002-10-29 2004-05-25 Freescale Semiconductor, Inc. Method and apparatus for selectively optimizing interpreted language code
US7203941B2 (en) * 2002-11-14 2007-04-10 Microsoft Corporation Associating a native resource with an application
US7275241B2 (en) * 2003-11-21 2007-09-25 International Business Machines Corporation Dynamic instrumentation for a mixed mode virtual machine
US7788657B2 (en) * 2004-02-27 2010-08-31 Tvworks, Llc Targeted runtime compilation
US7489946B2 (en) * 2005-04-14 2009-02-10 Sudharshan Srinivasan Cellular phone in form factor of a conventional audio cassette
US8296745B2 (en) * 2007-12-31 2012-10-23 Oracle America, Inc. Method and apparatus for portable stub generation
US20100153675A1 (en) * 2008-12-12 2010-06-17 Microsoft Corporation Management of Native Memory Usage
US8407573B2 (en) * 2009-10-09 2013-03-26 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for equalization of received signals
EP2497055B1 (de) * 2009-11-05 2018-07-18 Trusted Logic Sicheres tragbares objekt
JP5466601B2 (ja) * 2010-08-31 2014-04-09 インターナショナル・ビジネス・マシーンズ・コーポレーション コード生成方法、システム及びプログラム
US9141540B2 (en) * 2010-11-12 2015-09-22 International Business Machines Corporation Garbage collection of interned strings

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
None *
See also references of WO2012000949A1 *

Also Published As

Publication number Publication date
US20130311980A1 (en) 2013-11-21
US20170075667A1 (en) 2017-03-16
US10216497B2 (en) 2019-02-26
FR2961922A1 (fr) 2011-12-30
FR2961922B1 (fr) 2013-12-13
US9535672B2 (en) 2017-01-03
WO2012000949A1 (fr) 2012-01-05

Similar Documents

Publication Publication Date Title
WO2012000949A1 (fr) Procédé de compilation sélective, dispositif et produit programme d'ordinateur correspondant
EP2649523B1 (de) Verfahren zur erstellung eines zwischencodes einer anwendung
US8726255B2 (en) Recompiling with generic to specific replacement
US8108848B2 (en) Automatic and transparent memoization
US11354159B2 (en) Method, a device, and a computer program product for determining a resource required for executing a code segment
EP2649522B1 (de) Verfahren zur bereitstellung einer anwendung als bibliothek in einer virtuellen maschine
US20200065124A1 (en) Shortening just-in-time code warm up time of docker containers
EP2649520B1 (de) Anwendungsverteilung zur bereitstellung einer dedizierten anwendung an ein endgerät aus einer vom entwickler deponierten anwendung
WO2001014958A2 (fr) Protocole de gestion, procede de verification et de transformation d'un fragment de programme telecharge et systemes correspondants
EP2862066A1 (de) Tragbare adaptive bibliotheken
US20150294114A1 (en) Application randomization
WO2018154197A1 (fr) Procédé, équipement et système de gestion du système de fichiers
EP1649363B1 (de) Verfahren zur verwaltung von software-komponenten, die in ein eingebettetes system integriert sind
WO2021211911A1 (en) Artificial intelligence cloud operating system
Ernstsson et al. Extending smart containers for data locality‐aware skeleton programming
WO2007068706A1 (fr) Procede pour securiser l'execution d'un code logiciel en langage intermediaire dans un appareil portatif
FR2871590A1 (fr) Procede de chargement d'un logiciel en langage intermediaire oriente objet dans un appareil portatif.
WO2021130420A1 (fr) Procédé et dispositif mettant en œuvre ce procédé pour générer et installer un code exécutable dans la mémoire d'un noyau d'une machine virtuelle depuis un hyperviseur
FR3074939A1 (fr) Procede de gestion du systeme de fichiers d'un terminal informatique
US20120102473A1 (en) Abstract method removal for reduced memory footprint with optimizer tool
EP2252933A1 (de) Architektur für beschleunigte computerverarbeitung
WO2019180376A1 (fr) Procédé et système pour créer une image d'une application
FR3047627A1 (fr) Procede de stockage de contenus , procede de consultation de contenus, procede de gestion de contenus et lecteurs de contenus
FR3087916A1 (fr) Procede de traitement d'un code source, dispositif, systeme et programme correspondant
FR2957699A1 (fr) Systeme de traitement de donnees

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20130128

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20170908

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: GOOGLE INC.

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: GOOGLE LLC

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20190514

P01 Opt-out of the competence of the unified patent court (upc) registered

Effective date: 20230519