CN101344857B - 用于加速Java翻译的设备和方法 - Google Patents

用于加速Java翻译的设备和方法 Download PDF

Info

Publication number
CN101344857B
CN101344857B CN 200810098634 CN200810098634A CN101344857B CN 101344857 B CN101344857 B CN 101344857B CN 200810098634 CN200810098634 CN 200810098634 CN 200810098634 A CN200810098634 A CN 200810098634A CN 101344857 B CN101344857 B CN 101344857B
Authority
CN
China
Prior art keywords
bytecode
machine code
constant
look
parameterized
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.)
Expired - Fee Related
Application number
CN 200810098634
Other languages
English (en)
Other versions
CN101344857A (zh
Inventor
宋孝晶
莉琦·K·约翰
西吉·伊森
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.)
Samsung Electronics Co Ltd
University of Texas System
Original Assignee
Samsung Electronics Co Ltd
University of Texas System
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 Samsung Electronics Co Ltd, University of Texas System filed Critical Samsung Electronics Co Ltd
Publication of CN101344857A publication Critical patent/CN101344857A/zh
Application granted granted Critical
Publication of CN101344857B publication Critical patent/CN101344857B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • 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
    • 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/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation

Abstract

提供一种用于加速Java翻译的设备和方法。所述设备包括:查找表单元,存储查找表,所述查找表包括字节码和与字节码相应的本机代码的排列;解码器,在查找表中产生与输入的字节码相应的本机代码的指针;参数化的字节码处理单元,在输入的字节码中检测参数化的字节码,并在查找表中产生常数嵌入所需的本机代码的指针;常数嵌入单元,将常数嵌入到具有由参数化的字节码处理单元产生的指针的本机代码中;本机代码缓冲器,存储由解码器或常数嵌入单元产生的本机代码。

Description

用于加速Java翻译的设备和方法
本申请要求于2007年6月4日提交到韩国知识产权局的第10-2007-0054663号韩国专利申请的优先权,其公开通过引用完全包含于此。
技术领域
与本发明一致的设备和方法涉及加速Java翻译,通过该设备和方法,可产生优化的字节码。
背景技术
Java是Sun Mircosystems公司开发的一种面向对象的编程语言,Java相比于现有技术的编程语言具有几个重大的优点,包括平台独立性、沙盒(sandbox)模型安全性和代码压缩性。Java代码小而简单,并且可跨平台和操作系统被移植。
在现有技术的编程语言中,程序的源代码被发送到编译器,所述编译器将程序翻译为机器码或处理器指令,所述处理器指令包括本机指令(nativeinstruction)。例如,为x86系统编译的指令只能被x86系统执行。
但是,Java编译器获取Java程序并产生字节码。字节码是看起来象机器码的指令,但是并不专用于任何处理器。为了执行Java字节码,需要Java虚拟机。
Java虚拟机解释Java字节码,并将其转换为等同的本机代码。由于字节码不专用于任何处理器,所以只要Java虚拟机是可用的,那么字节码形式的程序可在任何架构上运行。
Java字节码的一个缺点是执行速度低。直接在硬件上运行的系统专用程序比必须被Java虚拟机处理的Java字节码运行快很多(其中,为该硬件编译所述系统专用程序)。处理器不仅必须在Java虚拟机中将Java字节码转换为本机代码,还必须执行该本机代码。
存在几种提高Java字节码的执行速度的方法。一种方法是通过称为“即时”(Just-in-Time,JIT)编译的技术来加速Java虚拟机,但是这种方法的缺点在于低执行速度和JIT编译开销。
为了克服这些缺点,已经提出了使用Java硬件加速器。Java硬件加速器使用查找表将Java字节码转换为本机代码。即,Java硬件加速器通过将Java字节码转换为存储在查找表中的本机代码,来对执行速度进行加速。
即使使用Java硬件加速器,仍然存在附加存储器使用和功耗的问题。因此,期望提供一种能够实现最小化存储器使用和低功耗的技术。因此,需要一种用于对将字节码转换为本机代码的处理进行优化的方法。
发明内容
本发明的示例性实施例克服了上述缺点以及上面没有描述的其它缺点。另外,本发明不需要克服上述缺点,并且本发明的示例性实施例可不克服上述问题中的任何问题。
本发明提供一种用于加速Java翻译的设备和方法,通过该设备和方法,可产生被优化为字节码的本机代码。
根据本发明的一方面,提供一种用于加速Java翻译的设备,所述设备包括:查找表,具有字节码和与字节码相应的本机代码的排列;解码器,在查找表中产生与输入的字节码(feed bytecode)相应的本机代码的指针;参数化的字节码处理单元,在输入的字节码中检测参数化的字节码,并在查找表中产生常数嵌入所需的本机代码的指针;常数嵌入单元,将常数嵌入到具有由参数化的字节码处理单元产生的指针的本机代码中;本机代码缓冲器,存储由解码器或常数嵌入单元产生的本机代码。
根据本发明的另一方面,提供一种用于加速Java翻译的方法,所述方法包括:确定输入的字节码是否是参数化的字节码;调用常数嵌入所需的本机代码,所述本机代码相应于参数化的字节码;从调用的本机代码检测引导指令(key instruction);将常数嵌入到识别的引导指令中。
附图说明
通过参照附图详细描述本发明的示例性实施例,本发明的以上和其它方面将会变得清楚,其中:
图1是示出根据本发明示例性实施例的用于加速Java翻译的设备的示图;
图2是示出根据本发明示例性实施例的用于加速Java翻译的方法的流程图;
图3是示出在根据本发明示例性实施例的用于加速Java翻译的方法中的分析输入的字节码的处理的流程图;
图4是示出在根据本发明示例性实施例的用于加速Java翻译的方法中的通过从参数化的字节码识别引导指令来调用本机代码的处理的流程图;
图5是示出在根据本发明示例性实施例的用于加速Java翻译的方法中的将常数嵌入到调用的本机代码中的处理的流程图。
具体实施方式
通过参照下面示例性实施例和附图的详细描述,本发明的优点和特点以及实现本发明的方法可被更易于理解。但是,本发明可按照多种不同的形式被实施,而不应被解释为限于这里所阐述的示例性实施例。更为确切的是,提供这些示例性实施例以使得本公开透彻和完整,并将本发明的构思完全传达给本领域的技术人员,并且本发明仅由权利要求限定。在整个说明书中,相同的标号表示相同的部件。
下面将参照根据本发明的示例性实施例的方法的流程图来描述根据本发明的用于加速Java翻译的设备和方法。
应该理解的是,流程图的每个块以及流程图中的块的组合可由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机或其它可编程数据处理设备的处理器,以创建用于实现在流程块或多个流程块中指定的功能的装置。
这些计算机程序指令还可被存储在计算机可用或计算机可读存储器中,所述计算机可用或计算机可读存储器可指导计算机或其它可编程数据处理设备以特定方式运行,从而这些指令实现在一个流程块或多个流程块中指定的功能。
计算机程序指令还可被加载到计算机或其它可编程数据处理设备中,以产生一系列将在计算机或其它可编程数据处理设备上执行的操作步骤,从而生成用于实现在一个流程块或多个流程块中指定的功能的计算机实现的处理。
另外,每个块可表示代码的模块、代码段或代码的一部分,所述代码的模块、代码段或代码的一部分可包括一个或多个用于实现指定的逻辑功能的可执行指令。应注意的是,在其它实施方式中,在块中标注的功能可不按照标注的次序发生,或者按照硬件或软件的不同配置而发生。例如,取决于所涉及的功能性,连续显示的两个块实际上可基本同时被执行,或者这两个块有时可按照相反的次序被执行。
为了更好地理解本发明,下面包括了在本说明书中采用的所选择的术语的定义。
字节码是Java程序的编译形式。一旦Java程序被转换为字节码,则Java程序可通过网络被发送,或者可被Java虚拟机执行。
本机代码是在特定平台上执行的机器语言。本机代码通过虚拟机从字节码转换而来。
参数化的字节码是具有参数值的字节码,即,取决于特定值而执行的字节码。
引导指令是与参数化的字节码相应的一组本机代码中的本机指令,在该本机指令中将嵌入与参数值相应的常数。
图1是示出根据本发明示例性实施例的用于加速Java翻译的设备的示图。
查找表单元110存储查找表,该查找表包括字节码和与字节码相应的本机代码的排列。本机代码可取决于使用的中央处理单元(CPU)而不同,并且与字节码相应的本机代码组成一组一个或多个本机指令。
解码器120或参数化的字节码处理单元130使用存储在查找表单元110中的查找表,以分析与输入的字节码相应的本机代码。
由于查找表单元110不存储所有的字节码,所以最好但不是必要地,解码器120确定在查找表单元110中是否存在输入的字节码。
查找表单元110存储关于引导指令(即,嵌入了常数的本机指令)的信息。常数嵌入单元140使用关于存储的引导指令的信息来从本机指令识别引导指令。
最好但不是必要地,查找表单元110存储引导指令的掩码模式(maskpattern)。存储的引导指令的掩码模式用于在将常数嵌入到本机代码中的常数嵌入单元140中识别常数嵌入位置。
解码器120在查找表单元110中产生与输入的字节码相应的本机代码的指针。在查找表单元110中产生的指针用于从查找表单元110提取本机指令集。
解码器120确定在本机代码缓冲器150中是否存在输入的字节码。如果在本机代码缓冲器150中存在输入的字节码,则相应的本机代码返回到CPU,由此提高处理速度。
另外,解码器120确定在查找表单元110中是否存在输入的字节码。存储在查找表单元110中的查找表不包括与输入的字节码相应的所有本机代码。因此,如果在查找表中不存在输入的字节码,则软件解释器160对字节码进行解释。
参数化的字节码处理单元130可被合并到解码器120中。
参数化的字节码处理单元130检测参数化的字节码。如果输入的字节码是参数化的字节码,则参数化的字节码处理单元130在查找表单元110中产生嵌入了常数的本机代码的指针。即,参数化的字节码处理单元130调用与字节码的常数版本相应的本机指令。这里,参数化的字节码不被转换为具有参数值的本机代码,而是被转换为具有固定值的本机代码。
最好但不是必要地,参数化的字节码处理单元130存储参数化的字节码的列表。
下面描述在ARM CPU中实现的处理Java字节码的示例。Java字节码“ILOAD 10”表示ILOAD需要加载存储在栈的局部变量10中的值。传统上,在例如ILOAD 10被输入的情况下,与ILOAD相应的本机代码被产生,并且局部变量地址被计算。
与ILOAD相应的传统的本机代码如下:
LDRB reg1,[reg2],#offset
LDR reg1,[reg2+reg3 shift#n]
STR reg1,[reg2+offset]
相反,由于本发明的Java字节码“ILOAD 10”是参数化的字节码,所以参数化的字节码处理单元130产生在将常数嵌入到本机代码的过程中所需的指针。即,对于ILOAD 10,与ILOAD_0相应的本机指令被调用。
根据本发明,与ILOAD_0相应的本机代码如下:
LDR r0,[VM_lp,#0]
STR r0,[VM_sp,#4]!
与传统情况相比,根据本发明,从字节码转换而来的本机指令的数量可被降低,即,从3降为2,这意味着存储器使用被降低,执行速度被加速。
参数化的字节码处理单元130分析参数化的字节码的参数值。参数化的字节码的参数值应适合于本机指令中的立即字段(immediate field)。在该示例中,由于每个地址具有增量4,所以立即字段中的可用比特的数量可为:9-2=7。这样,仅当参数值小于128时,该参数值被编码为立即操作数。即,对于ILOAD
10,由于参数值(即,10)小于128,所以与ILOAD_0相应的本机指令被调用。
如果参数值不适合于本机指令中的立即字段,则参数化的字节码处理单元130根据传统方式产生在将常数嵌入到本机代码的过程中所需的指针。
常数嵌入单元140将常数嵌入到具有参数化的字节码处理单元130产生的指针的本机代码中。这里,嵌入的常数是与在具有指针的本机代码的结尾输入的参数相应的值。
最好但不是必要地,常数嵌入单元140执行在本机指令中识别使用常数的引导指令以及非引导指令的功能。本机代码组成一组一个或多个本机指令(所述本机指令具有在此产生的指针),并且常数嵌入单元140从所述一个或多个本机指令识别嵌入了常数的引导指令。最好但不是必要地,关于引导指令的信息被存储在查找表单元110中。
在上面描述的示例中,与ILOAD_0相应的本机指令代码如下:
LDR r0,[VM_lp,#0]
STR r0,[VM_sp,#4]!
在该示例中,引导指令是LDR r0,[VM_lp,#0]。因此,当与参数值相应的常数(即,10)被嵌入到引导指令中时,嵌入了该常数(即,10)的引导指令为:
LDR r0,[VM_lp,#40]
STR r0,[VM_sp,#4]!
如下面所确认的,根据本发明,获得了与传统上从ILOAD 10转换而来的本机代码相同的本机代码:
LDRB r0,[VM_ip],#1
LDR r0,[VM_lp,r0,LSL#2]
STR r0,[VM_sp,#4]!
根据传统方式的转换处理和根据本发明的转换处理的比较结果显示出,尽管使用相同的过程,但是本发明有利地将本机指令的数量从传统方式情况下的3降低到例如2。因此,本发明降低了使用的存储器的量,并提高了翻译速度。
另外,可防止将与ILOAD_1、ILOAD_2和ILOAD_3相应的本机代码存储在查找表单元110中。上述ILOAD可在ILOAD_0被产生。通过这种方式,可节省用于ILOAD_1、ILOAD_2和ILOAD_3的存储空间,从而可确保用于其它字节码的另外的存储空间。
最好但不是必要地,常数嵌入单元140读取存储在查找表单元110中的引导指令的掩码模式以用于常数嵌入。在大多数情况下,立即字段位于引导指令的固定位置。但是,在立即字段没有位于引导指令的固定位置的少数情况下,可涉及到复杂的过程。因此,引导指令的掩码模式被存储在查找表单元110中,并且常数嵌入单元140从查找表单元110读取掩码模式以在常数嵌入过程中用于参考。
本机代码缓冲器150存储由解码器120或常数嵌入单元140产生的本机代码。本机代码缓冲器150存储本机代码,并将该本机代码提供给CPU。
最好但不是必要地,本机代码缓冲器150将输入的字节码连同本机代码一起存储。在输入的字节码存在于本机代码缓冲器150的情况下,相应的本机代码按照解码器120的请求而返回到CPU。
这里,根据本发明的Java翻译加速设备的各种组件可被实现为(但不限于)软件、硬件或固件。每个组件可被有利地配置为驻留在可寻址存储介质上,并且可被配置为在一个或多个处理器上执行。在这些组件中提供的功能性可被组合为更少的组件或被进一步分为另外的组件。
在可选择的示例性实施例中,用于加速Java翻译的设备可被合并到CPU中。
图2是示出根据本发明示例性实施例的用于加速Java翻译的方法的流程图。
在操作S210,将被转换的字节码从CPU输入到解码器120。
然后,在操作S220,解码器120对输入的字节码进行分析。
在对输入的字节码进行分析之后,在操作S230,参数化的字节码处理单元130从非参数化的字节码检测参数化的字节码,并调用本机代码。
其后,在操作S240,常数嵌入单元140将常数嵌入到本机代码中。
在操作S250,本机代码缓冲器150存储由解码器120或常数嵌入单元140产生的本机代码。最好但不是必要地,本机代码缓冲器150将输入的字节码连同本机代码一起存储。
在操作S260,本机代码缓冲器150将存储在其中的本机代码发送回至CPU。
现在将参照图3至图5来更详细地描述根据本发明的用于加速Java翻译的方法。
图3是示出根据本发明示例性实施例的用于加速Java翻译的方法中的分析输入的字节码的处理的流程图。
在操作S310,解码器120确定在本机代码缓冲器150中是否存在输入的字节码。如果在本机代码缓冲器150中存在输入的字节码,则过程进行到操作S260,以将相应的本机代码返回到CPU,由此提高处理速度。
在操作S320,解码器120确定在查找表单元110中是否存在输入的字节码。如果在查找表单元110中存在输入的字节码,则过程进行到操作S230。查找表单元110不包括所有字节码的本机代码。因此,如果在查找表单元110中不存在输入的字节码,则在操作S330,软件解释器160对字节码进行解释。
图4是示出在根据本发明示例性实施例的用于加速Java翻译的方法中的通过检测参数化的字节码来调用本机代码的处理的流程图。
在操作S410,参数化的字节码处理单元130确定输入的字节码是否是参数化的字节码。参数化的字节码处理单元130通过参考存储在查找表单元110中的参数化的字节码的列表来检测参数化的字节码。
如果输入的字节码不是参数化的字节码,则解码器产生从存储在查找表单元110中的输入的字节码转换而来的本机代码的指针。在操作S420,与输入的字节码相应的本机代码被调用。
在操作S430,参数化的字节码处理单元130分析参数化的字节码的参数值,并确定参数化的字节码是否适合于本机指令中的立即字段。
如果参数化的字节码不适合于本机指令中的立即字段,则参数化的字节码处理单元130产生与输入的字节码相应的本机代码的指针,并且过程进行到操作S420以调用与输入的字节码相应的本机代码。
在操作S440,参数化的字节码处理单元130从查找表单元110产生可用于嵌入常数的本机代码的指针,并调用与参数化的字节码相应的本机代码。即,参数化的字节码处理单元130调用与字节码的常数版本相应的本机代码。参数化的字节码不被转换为具有参数值的本机代码,而是被转换为具有固定值的本机代码。
图5是示出在根据本发明示例性实施例的用于加速Java翻译的方法中的将常数嵌入到调用的本机代码中的处理的流程图。
在操作S510,常数嵌入单元140从调用的本机代码识别使用常数的引导指令。常数嵌入单元140从查找表单元110读取关于引导指令的信息,以在常数嵌入过程中用于参考。由于具有指针的本机代码组成一组一个或多个本机指令,所以可识别嵌入了常数的引导指令和不具有常数的本机代码。
在操作S520,常数嵌入单元140加载存储在查找表单元110中的引导指令的掩码模式。在大多数情况下,立即字段位于固定位置。但是,在立即字段没有位于固定位置的少数情况下,复杂的过程可能是必要的。为此,引导指令的掩码模式被存储在查找表单元110中,从而常数嵌入单元140从查找表单元110读取掩码模式以在常数嵌入过程中用于参考。在操作S530,常数嵌入单元140将常数嵌入到引导指令中。这里,嵌入的常数是与在具有在此产生的指针的本机代码的结尾输入的参数值相应的值。即,字节码的参数值被编码到本机代码的立即字段中。
本发明的内容不仅可应用于Java语言,还可应用于其它解释器语言或虚拟机语言。
根据本发明示例性实施例的用于加速Java翻译的设备和方法可提供下面的一个或多个优点。
第一,可通过产生被优化为参数化的字节码的本机代码来降低存储器使用。
第二,可通过产生被优化为参数化的字节码的本机代码来加速翻译速度。
第三,可通过降低存储在查找表中的本机代码的数量来节省存储空间。
本发明的效果不应限于上述描述,并且根据由权利要求限定的本发明的精神和范围,本发明的另外的效果和优点将对于本领域技术人员更加明显。
虽然参照本发明的示例性实施例具体显示和描述了本发明,但是本领域的普通技术人员应该理解,在不脱离由权利要求限定的本发明的精神和范围的情况下,可以对其进行形式和细节的各种改变。因此,期望这些示例性实施例在各个方面被认为是示意性和非限制性的,并且参照权利要求而不是上述描述来指示本发明的范围。

Claims (15)

1.一种用于加速Java翻译的设备,所述设备包括:
查找表单元,存储查找表,所述查找表包括字节码和与字节码相应的本机代码的排列;
解码器,在查找表中产生与输入的字节码相应的本机代码的指针;
参数化的字节码处理单元,在输入的字节码中检测参数化的字节码,并在查找表中产生常数嵌入所需的本机代码的指针;
常数嵌入单元,将常数嵌入到具有由参数化的字节码处理单元产生的指针的本机代码中;
本机代码缓冲器,存储由常数嵌入单元产生的本机代码,
其中,常数嵌入单元通过使用检测的参数化的字节码作为单个输入,来将常数嵌入到本机代码中。
2.根据权利要求1所述的设备,其中,参数化的字节码处理单元存储参数化的字节码的列表。
3.根据权利要求1所述的设备,其中,参数化的字节码处理单元分析字节码的参数值。
4.根据权利要求1所述的设备,其中,常数嵌入单元在本机指令中识别非引导指令以及使用常数的引导指令,其中,与字节码相应的本机代码组成所述本机指令。
5.根据权利要求1所述的设备,其中,常数嵌入单元通过读取存储在查找表单元中的引导指令的掩码模式来将常数嵌入到引导指令中。
6.根据权利要求1所述的设备,其中,查找表单元存储关于引导指令的信息。
7.根据权利要求1所述的设备,其中,查找表单元存储引导指令的掩码模式。
8.根据权利要求1所述的设备,其中,解码器确定在查找表中是否存在输入的字节码。
9.根据权利要求1所述的设备,其中,本机代码缓冲器将输入的字节码与产生的本机代码一起存储,并且解码器确定在本机代码缓冲器是否存在输入的字节码。
10.一种用于加速Java翻译的方法,所述方法包括:
确定输入的字节码是否是参数化的字节码;
调用常数嵌入所需的本机代码,所述本机代码相应于参数化的字节码;
从调用的本机代码识别引导指令;
通过使用参数化的字节码作为单个输入,将常数嵌入到识别的引导指令中。
11.根据权利要求10所述的方法,还包括:确定参数化的字节码的参数值是否适合于本机指令中的立即字段,其中,与字节码相应的本机代码组成所述本机指令。
12.根据权利要求10所述的方法,还包括:读取存储在查找表中的引导指令的掩码模式。
13.根据权利要求10所述的方法,还包括:确定在本机代码缓冲器中是否存在输入的字节码。
14.根据权利要求10所述的方法,还包括:确定在查找表中是否存在输入的字节码。
15.根据权利要求10所述的方法,还包括:将嵌入了常数的本机代码存储在本机代码缓冲器中。
CN 200810098634 2007-06-04 2008-06-03 用于加速Java翻译的设备和方法 Expired - Fee Related CN101344857B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR1020070054663 2007-06-04
KR10-2007-0054663 2007-06-04
KR1020070054663A KR101407629B1 (ko) 2007-06-04 2007-06-04 자바 변환 가속 장치 및 방법

Publications (2)

Publication Number Publication Date
CN101344857A CN101344857A (zh) 2009-01-14
CN101344857B true CN101344857B (zh) 2013-09-04

Family

ID=40089749

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200810098634 Expired - Fee Related CN101344857B (zh) 2007-06-04 2008-06-03 用于加速Java翻译的设备和方法

Country Status (4)

Country Link
US (2) US8230407B2 (zh)
JP (1) JP2008299835A (zh)
KR (1) KR101407629B1 (zh)
CN (1) CN101344857B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8286152B2 (en) * 2007-08-22 2012-10-09 International Business Machines Corporation Systems, methods, and computer products for just-in-time compilation for virtual machine environments for fast application startup and maximal run-time performance
KR100930831B1 (ko) * 2009-03-24 2009-12-10 주식회사 에이디칩스 바이트코드 변환 가속 장치 및 그 방법
US20110154214A1 (en) * 2009-12-18 2011-06-23 Microsoft Corporation Offloading Content Retrieval And Decoding In Pluggable Content-Handling Systems
US9836316B2 (en) * 2012-09-28 2017-12-05 Intel Corporation Flexible acceleration of code execution
CN104077173A (zh) * 2013-03-31 2014-10-01 宋浩 智能卡内java程序指令的执行方法及智能卡
US10776090B2 (en) 2018-01-16 2020-09-15 International Business Machines Corporation Reducing overhead of data conversation between Java and non-Java representations
CN110488738B (zh) * 2019-07-23 2021-04-09 中车青岛四方机车车辆股份有限公司 一种代码生成方法及装置
CN110675256B (zh) * 2019-08-30 2020-08-21 阿里巴巴集团控股有限公司 部署和执行智能合约的方法及装置
US10783082B2 (en) 2019-08-30 2020-09-22 Alibaba Group Holding Limited Deploying a smart contract

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6481006B1 (en) * 1999-05-06 2002-11-12 International Business Machines Corporation Method and apparatus for efficient invocation of Java methods from native codes
CN1613058A (zh) * 2001-11-07 2005-05-04 富士通株式会社 配有jit编译器的虚拟计算机,操作所述计算机的方法以及包括所述虚拟计算机的终端设备
US6965984B2 (en) * 2001-05-31 2005-11-15 Arm Limited Data processing using multiple instruction sets

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03271941A (ja) * 1990-03-20 1991-12-03 Fujitsu Ltd 言語処理プロセッサの最適化方式
US5995754A (en) * 1997-10-06 1999-11-30 Sun Microsystems, Inc. Method and apparatus for dynamically optimizing byte-coded programs
US6314445B1 (en) * 1998-08-03 2001-11-06 International Business Machines Coproration Native function calling
US6539433B1 (en) * 1998-09-30 2003-03-25 Matsushita Electric Industrial Co., Ltd. System for distributing native program converted from Java bytecode to a specified home appliance
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
GB9921720D0 (en) * 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
US6832369B1 (en) * 2000-08-01 2004-12-14 International Business Machines Corporation Object oriented method and apparatus for class variable initialization
US20060206874A1 (en) * 2000-08-30 2006-09-14 Klein Dean A System and method for determining the cacheability of code at the time of compiling
US6760905B1 (en) * 2000-09-21 2004-07-06 Curl Corporation Lazy compilation of template-generated classes in dynamic compilation execution environments
KR20020028814A (ko) * 2000-10-10 2002-04-17 나조미 커뮤니케이션즈, 인코포레이티드 마이크로코드 엔진을 이용한 자바 하드웨어 가속기
GB2376099B (en) * 2001-05-31 2005-11-16 Advanced Risc Mach Ltd Program instruction interpretation
WO2003014921A1 (en) 2001-07-02 2003-02-20 Nazomi Communications, Inc. Intermediate language accelerator chip
EP1412852A1 (en) * 2001-07-02 2004-04-28 Nazomi Communications Inc. Intermediate language accelerator chip
US8769508B2 (en) * 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
US7434030B2 (en) * 2001-09-12 2008-10-07 Renesas Technology Corp. Processor system having accelerator of Java-type of programming language
AU2002329560A1 (en) * 2001-09-25 2003-04-07 Koninklijke Philips Electronics N.V. Software support for virtual machine interpreter (vmi) acceleration hardware
JP4163927B2 (ja) * 2001-10-31 2008-10-08 松下電器産業株式会社 Javaコンパイラ、及び、当該Javaコンパイラが使用するコンパイル情報の生成装置
US6973644B2 (en) * 2002-04-12 2005-12-06 The Mathworks, Inc. Program interpreter
JP2003337709A (ja) * 2002-05-21 2003-11-28 Hitachi Ltd コンパイル方法
US20040153996A1 (en) * 2003-01-30 2004-08-05 International Business Machines Corporation Method and system for determining the defining classLoader of a Java class as it is being defined
US20060130016A1 (en) * 2003-03-17 2006-06-15 Wagner John R Method of kernal-mode instruction interception and apparatus therefor
US7493605B2 (en) * 2004-12-29 2009-02-17 Mainsoft R&D Ltd Method and a software product for adapting a .Net framework compliant reflection mechanism to a java environment
KR100763177B1 (ko) * 2005-04-21 2007-10-04 삼성전자주식회사 자바 가상 머신의 명령어 수행 방법 및 그 장치
US8051143B2 (en) * 2005-10-14 2011-11-01 Oracle International Corporation Sharing sessions between web-based applications
US20070288909A1 (en) * 2006-06-07 2007-12-13 Hong Kong Applied Science and Technology Research Institute Company Limited Hardware JavaTM Bytecode Translator
US8683453B2 (en) * 2006-11-30 2014-03-25 Motorola Mobility Llc System for overriding interpreted byte-code with native code
US9038041B2 (en) * 2006-12-04 2015-05-19 Tibco Software, Inc. Stream processor with compiled programs
US8713546B2 (en) * 2006-12-18 2014-04-29 Oracle International Corporation System and method for redundant array copy removal in a pointer-free language
US8458670B2 (en) * 2007-09-27 2013-06-04 Symantec Corporation Automatically adding bytecode to a software application to determine network communication information
US8296745B2 (en) * 2007-12-31 2012-10-23 Oracle America, Inc. Method and apparatus for portable stub generation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6481006B1 (en) * 1999-05-06 2002-11-12 International Business Machines Corporation Method and apparatus for efficient invocation of Java methods from native codes
US6965984B2 (en) * 2001-05-31 2005-11-15 Arm Limited Data processing using multiple instruction sets
CN1613058A (zh) * 2001-11-07 2005-05-04 富士通株式会社 配有jit编译器的虚拟计算机,操作所述计算机的方法以及包括所述虚拟计算机的终端设备

Also Published As

Publication number Publication date
CN101344857A (zh) 2009-01-14
KR101407629B1 (ko) 2014-06-13
US20120233603A1 (en) 2012-09-13
US9038039B2 (en) 2015-05-19
US20080301652A1 (en) 2008-12-04
US8230407B2 (en) 2012-07-24
JP2008299835A (ja) 2008-12-11
KR20080106796A (ko) 2008-12-09

Similar Documents

Publication Publication Date Title
CN101344857B (zh) 用于加速Java翻译的设备和方法
US6381737B1 (en) Automatic adapter/stub generator
EP3314422B1 (en) Extending a virtual machine instruction set architecture
US7409678B2 (en) Compiler, compilation and storage
CA2479931A1 (en) System, method and computer program product for generating a shader program
US20060248262A1 (en) Method and corresponding apparatus for compiling high-level languages into specific processor architectures
WO2012062081A1 (zh) 一种基于字节码文件重构的Java类在线更新方法
US7581216B2 (en) Preserving platform independence with native accelerators for performance critical program objects
US20110252409A1 (en) Methods and systems to implement non-abi conforming features across unseen interfaces
US7739674B2 (en) Method and apparatus for selectively optimizing interpreted language code
US8407678B2 (en) Method of array interception using data-flow analysis
CN110865814A (zh) 一种支持异构计算核架构的编译器实现方法和系统
US20050028132A1 (en) Application specific optimization of interpreters for embedded systems
EP1183598A2 (en) Optimized bytecode interpreter of virtual machine instructions
US20040215444A1 (en) Hardware-translator-based custom method invocation system and method
EP1188110B1 (en) Indefinite-size variables within an intermediate language
JP2000132388A (ja) ソフトウェア・コンポ―ネントを処理および配布するための方法および装置
CN111971655B (zh) 用于超文本标记语言图形内容的本机运行时技术
US20040158825A1 (en) Cache controller computer system and method for program recompilation
US7266811B2 (en) Methods, systems, and computer program products for translating machine code associated with a first processor for execution on a second processor
Strobel et al. A backend tool for the integration of memory optimizations into embedded software
Chiba What are the best join points
JP2002041283A (ja) サブパイプライン変換構造、及びバイナリの互換性を持たせる方法
CN113918214A (zh) 程序运行方法、装置、电子设备及存储介质
CN116360855A (zh) 一种指令转换电路及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130904