CN100476721C - 提供模块化本机方法启用系统的方法、和装置和系统 - Google Patents
提供模块化本机方法启用系统的方法、和装置和系统 Download PDFInfo
- Publication number
- CN100476721C CN100476721C CNB200580009245XA CN200580009245A CN100476721C CN 100476721 C CN100476721 C CN 100476721C CN B200580009245X A CNB200580009245X A CN B200580009245XA CN 200580009245 A CN200580009245 A CN 200580009245A CN 100476721 C CN100476721 C CN 100476721C
- Authority
- CN
- China
- Prior art keywords
- native method
- information
- native
- virtual machine
- stake
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Machine Translation (AREA)
Abstract
本文描述了提供模块化本机方法启用(NMI)系统的方法和装置。在示例性的方法中,从一个或更多个虚拟机接收与NMI调用相关联的NMI信息。所述NMI信息通过NMI适配器被翻译。为了生成本机桩,翻译的NMI信息被提供给模块化NMI组件。
Description
技术领域
本公开一般地涉及受管理运行时环境(managed runtime environment),并且更具体地,涉及提供模块化本机方法启用(native method invocation)系统的方法和装置。
背景技术
随着应用向受管理运行时环境(MRTE)(例如虚拟机(JVM)和.NET提供的公共语言运行时(CLR))移植,非受管理应用组件可能需要集成到新的基于MRTE的系统中或与之共存。具体地,受管理代码(managed code)是在MRTE的控制下执行的代码(例如,任何用的C#(“C-sharp”)或者Visual Basic.NET编写的代码),而非受管理代码(unmanaged code)是在MRTE之外执行的代码(例如,COM组件和WIN32应用程序接口(API)函数)。然而,低级的平台组件和传统应用组件可能与新的基于MRTE的系统不兼容。即,一些传统应用组件被保持在MRTE之外(即非受管理代码),因为目前的MRTE不能理解传统应用组件的某些平台专用特征。将一些传统应用组件保持在MRTE之外的另一个原因是将传统应用组件转换成受管理代码过程中涉及到的高成本。
例如平台启用(platform invoke)的本机方法启用(NMI)是使受管理代码能够调用在例如WIN32API的动态链接库(DLL)中实现的非受管理函数的服务。典型地,NMI组件在公共语言基础结构(CLI)运行时(runtime)期间被用来改善处理器系统(即平台)的性能。具体地,NMI组件与虚拟机的许多不同的数据结构交互以处理受管理代码和非受管理代码。然而,目前不存在针对NMI组件的实现的标准,以使得从而从一个虚拟机到另一个,与NMI组件相关联的信息可以被定制用于优化。
发明内容
根据本发明的一个方面,提供了一种方法,包括:从第一个或更多个虚拟机接收与第一本机方法启用(NMI)调用相关联的第一NMI信息;从不同于所述第一虚拟机的第二虚拟机接收与第二NMI调用相关联的第二NMI信息;通过NMI适配器翻译所述第一和第二NMI信息;以及向模块化NMI组件提供所述翻译的第一和第二NMI信息中之一以生成本机桩。
根据本发明的另一个方面,提供了一种装置,包括:第一个或更多个虚拟机,所述第一个或更多个虚拟机提供与第一本机方法启用(NMI)调用相关联的第一NMI信息;不同于所述第一虚拟机的第二虚拟机,所述第二虚拟机提供与第二NMI调用相关联的第二NMI信息;NMI模块,所述NMI模块生成本机桩;以及耦合到所述第一和第二虚拟机和所述NMI模块的NMI适配器,所述NMI适配器接收所述第一和第二NMI信息中的至少一个,翻译所述第一和第二NMI信息中的所述至少一个NMI信息,并且向所述NMI模块提供所述翻译的NMI信息。
根据本发明的再一个方面,提供了一种处理器系统,包括:动态随机访问存储器(DRAM);以及耦合到所述DRAM的处理器,所述处理器识别来自第一个或更多个虚拟机的与第一本机方法启用(NMI)调用相关联的第一NMI信息,识别来自不同于所述第一虚拟机的第二虚拟机的与第二NMI调用相关联的第二NMI信息,通过NMI适配器翻译所述第一或第二NMI信息,并且向模块化NMI组件提供所述翻译的第一或第二NMI信息以生成本机桩。
附图说明
图1是在现有系统中配置的示例性本机方法启用(NMI)系统的框图表示。
图2是根据本文公开的本发明的教导的实施方法所配置的示例性模块化NMI系统的框图表示。
图3是示出如图2中的示例性模块化NMI系统的额外细节的框图表示。
图4是与NMI相关联的示例性代码的代码表示,所述NMI可以被用于实现如图3中的示例性模块化NMI系统。
图5是示例性的机器可访问指令的流程图表示,所述机器可访问指令可以被执行以实现如图3中的示例性模块化NMI系统。
图6是可以被用来实现如图3中的示例性模块化NMI系统的示例性处理器系统的框图表示。
具体实施方式
虽然以下公开了示例性系统,所述示例性系统包括,除其他组件以外,在硬件上被执行的软件和固件,但是,应该注意到,这样的系统仅仅是描述性的,并且不应被视为是限制性的。例如,可以预期,所公开的硬件、软件和/或固件的一些或全部可以被排他地实施在硬件中、排他地实施在软件中、排他地实施在固件中,或是被实施在硬件、软件和/或固件的某种组合中。
参照图1,以已知方式配置的NMI系统100通常包括虚拟机(VM)110和NMI组件120。VM 110是工作为编译器和处理器系统(例如图6的处理器系统1000)中处理器之间的接口的执行环境(即,运行时),例如虚拟机(JVM)和.NET提供的公共语言运行时(CLR)。具体地,VM 110包括编排语言(marshaling language,ML)桩(stub)112、元数据114、垃圾回收器(GC)116和预备桩(prestub)118。使用在这里,“桩”是指在方法执行期间完成各种任务的动态生成的代码的一部分。使用在这里,术语“方法”是指用于操纵数据的一个或更多个应用、程序、函数、例程或子例程。元数据114(即NMI信息)包括本机方法签名、方法返回类型,以及例如用于生成ML桩112的本机库路径和/或本机库名称的调用点信息。本领域普通技术人员将容易意识到,GC 116恢复不再被方法使用的存储器储存空间,从而该存储器储存空间对该方法的其他进程(process)和/或其他方法可用。预备桩118包括在运行时期间将对方法的NMI调用指示到入口点的代码。一般地,如果处理器以其本机代码来操作,那么处理器的性能可以被优化,因为本机代码是被编译成用特定处理器运行的代码。因此,当本机方法被VM 110启用时,预备桩118调入(call into)NMI组件120以生成本机方法的本机桩。NMI组件120通常包括多个NMI桩150和NMI缓存(cache)160。如以下详细描述的,所述多个NMI桩150包括已编译桩154、已解释桩156和平台专用桩158。NMI缓存160包括ML桩缓存162和本机桩缓存164。ML桩缓存162储存ML桩112,而本机桩缓存164储存为执行本机方法而基于ML桩112生成的本机桩(未示出)。
一旦NMI组件120通过预备桩118被VM 110调用,NMI组件120在运行时期间基于VM 110的元数据114来生成用于启用本机方法的ML桩112。具体地,NMI组件120将ML桩112翻译成作为本机桩的部分的本机指令(即数据编排)。如果数据编排是简单的(例如只有同构(isomorphic)的类型参数存在),ML桩112可以被编译成本机指令(即已编译桩154)。可替换地,如果数据编排是复杂的,ML桩112可以在运行时被解释(即已解释桩156)。GC 116在本机桩的执行期间被禁用(disable),并且在本机桩的执行之后被使能(enable),以确保被传递到本机方法的NMI方法签名的参数在存储器(例如图6的主存储器1030)中未被移动。在基于ML桩112生成本机桩之后,本机桩被储存在本机桩缓存164中。结果,在方法的后续调用期间,NMI组件120可以从本机桩缓存164取得本机桩。
在图2的实施例中,图示的模块化NMI系统200包括被一般性地示为VM#1212、VM#2214和VM#n 216的一个或更多个VM 210、模块化NMI组件220和NMI适配器230。一般地,NMI适配器230工作为VM 210和模块化NMI组件220之间的接口,以解决任何不匹配/兼容性问题,从而模块化NMI组件220可以被插入(plug into)到不同的VM 210的任何一个中。和连同图1描述的VM 110和模块化NMI组件120直接与彼此交互形成对照,VM 210和模块化NMI组件220与NMI适配器230交互。NMI适配器230作为VM 210和模块化NMI组件220之间的包装器(wrapper)。
在示例性的操作中,VM#1212可以调用NMI适配器230来启用模块化NMI组件220。NMI适配器230将从VM#1212接收到的NMI信息翻译成模块化NMI组件220的API。此外,模块化NMI组件220可以请求NMI适配器230从VM 210取得额外的信息。NMI适配器230将模块化NMI组件220与不同的VM实现分开,从而模块化NMI组件220独立于任何特定的VM(即独立的NMI组件)。在不同VM 210中使用的数据结构与模块化NMI组件220是不相关的,因为模块化NMI组件220通过NMI适配器230从不同VM 210中的任何一个取得信息,所述NMI适配器230以模块化NMI组件220知道的方式格式化取得的数据。即,NMI适配器230允许模块化NMI组件220被插入到不同VM 210中的任何一个。因此,模块化NMI组件220可以连同VM#1212、VM#2214、VM#n 216和/或任何其他适当的执行环境一起操作。
在图3的实施例中,图示的VM 312包括元数据314、GC 316和预备桩318。模块化NMI组件320包括NMI桩管理器340、多个NMI桩350和NMI缓存360。NMI桩管理器340是模块化NMI组件320中的核心组件,因为NMI桩管理器340处理来自VM 312的通过NMI适配器330的NMI调用。具体地,NMI桩管理器340从NMI适配器330接收请求完成NMI调用的VM请求,从应用和VM取得运行中后台(background)信息,并且分析该VM请求和运行中后台信息,以动态地从多个NMI桩350中选择合适的桩(即,已编译桩354、已解释桩356和/或平台专用桩358)来处理NMI调用。和连同图1描述的NMI组件120形成对照,模块化NMI组件320而不是VM 312生成ML桩352,因为NMI适配器330允许模块化NMI组件320定制关于VM 312的优化。在运行时期间,模块化NMI组件320基于ML桩352生成本机桩以执行本机方法。NMI缓存360包括ML桩缓存362和本机桩缓存364。模块化NMI组件320在ML桩缓存362中储存ML桩352,并且在本机桩缓存364中储存基于ML桩352生成以执行本机方法的本机桩。
在图4的实施例中,图示的代码400包括用于生成ML桩352的“DllImport”函数410和“外部”方法声明420,以通过模块化NMI组件320执行来自VM 312的NMI调用。具体地,模块化NMI组件320将控制传递到“DllImport”函数410,以定位“mylib.dll”中的本机代码库(例如DLL),并且将DLL加载到存储器(例如图6的存储器1030)中。此外,模块化NMI组件320定位本机方法在存储器中的地址,并将参量(argument)(例如整数、字符串、数组、结构等)推入栈中。“外部”方法声明420指示与NMI调用相关联的本机方法(例如方法“foo”)在VM 310外。结果,在将控制转移到本机方法之前,模块化NMI组件320可以生成ML桩352,以生成本机桩。
回头参照图3,模块化NMI组件320实现多个NMI桩350以执行不同的优化策略。即,所述多个NMI桩350中的每一个对应于特定的优化策略。具体地,已编译桩354将ML桩352解析并编译成本机指令,从而在ML桩352中没有运行时支持函数(runtimesupport function)。已编译桩354可以比已解释桩356运行得更快,但是可能包括对正被编排的参数的限制。当NMI调用正在执行时,已解释桩356解析和解释ML桩352。已解释桩356包括许多用于完成栈操纵和数据编排的运行时支持函数。平台专用桩358应用与具体平台相关的优化。例如,可以使用流式SIMD扩展(SSE)和/或SSE2指令,以改善使用(奔腾)技术、(安腾)技术和/或个人因特网客户体系结构(personal Intemet client architecture,PCA)技术中的一种或更多种来实现的处理器系统的性能。
表示可以被处理器执行以提供模块化NMI系统的机器可访问指令的流程图500在图5中被图示。本领域的普通技术人员将意识到,所述指令可以使用许多不同的编程代码中的任何代码以许多种不同方式中的任何方式来实现,所述编程代码储存在许多种计算机可访问介质的任何一种上,所述计算机可访问介质例如易失性或非易失性存储器或者其他大容量储存设备(例如,软盘,CD和DVD)。例如,机器可访问指令可以被实施在诸如可擦除可编程只读存储器(EPROM)、只读存储器(ROM)、随机访问存储器(RAM)、磁介质、光介质和/或任何其他适当类型的介质的机器可访问介质中。可替换地,机器可访问指令可以用可编程门阵列和/或专用集成电路(ASIC)实施。此外,尽管图5示出特定的动作顺序,但是本领域的普通技术人员将意识到,这些动作可以以其他时间顺序完成。再者,结合图3的示例性模块化NMI系统,流程图500仅被提供和描述为提供模块化NMI系统的一种方式的实施例。
在图5的实施例中,流程图500以NMI适配器330接收与由VM 312发起的NMI调用相关联的NMI信息开始(方框510)。例如,NMI信息可以包括本机方法签名、方法返回类型、本机库路径和本机库名称。相应地,NMI适配器330为模块化NMI组件320翻译NMI信息(框520)。NMI适配器330将翻译的NMI信息转发到NMI组件320以生成ML桩352(即数据编排)(框530)。基于ML桩352,模块化NMI组件320生成与NMI调用相关联的本机桩(框540)。在本机桩的执行期间,NMI适配器330禁用GC 316(框550)。如上面注意到的,NMI适配器330禁用GC 316,从而传递到本机方法的NMI方法签名的参数在存储器中不被移动。在本机桩执行后,NMI适配器330再次使能GC 316,从而GC 316可以提供其服务(框560)。此外,模块化NMI组件320在本机桩缓存364中储存本机桩(框570)。结果,模块化NMI组件320和NMI适配器330提供不同执行环境中定制的优化。
此处公开的方法和装置完全适合使用欧洲计算机制造商协会(ECMA)公共语言基础结构(CLI)(第二版,2002年12月)和ECMA C#语言规范(第二版,2002年12月)实现的源代码。然而,本领域的普通技术人员将意识到,本公开的教导可以应用于以其他的标准和规范的源代码。
图6是适于实现此处公开的方法和装置的示例性处理器系统1000的框图。处理器系统1000可以是桌面型计算机、膝上型计算机、笔记本式计算机、个人数字助理(PDA)、服务器,因特网应用设备(appliance)或任何其他类型的计算设备。
图6中示出的处理器系统1000包括芯片组1010,所述芯片组1010包括存储器控制器1012和输入/输出(I/O)控制器1014。众所周知,芯片组通常提供存储器和I/O管理功能,以及可被处理器1020访问或使用的多个通用和/或专用寄存器、计时器等。处理器1020用一个或更多个处理器实现。例如,处理器1020可以用(奔腾)技术、(安腾)技术、CentrinoTM(迅驰)技术和/或技术中的一种或更多种来实现。可替换地,其他处理技术可以用于实现处理器1020。处理器1020可以包括缓存1022,如本领域的普通技术人员将容易意识到的,缓存1022可以用一级统一缓存(L1),二级统一缓存(L2),三级统一缓存(L3)和/或任何其他适合的结构实现以储存数据。
常规地,存储器控制器1012完成使处理器1020能够经由总线1040访问主存储器1030并与之通信的功能,所述主存储器1030包括易失性存储器1032和非易失性存储器1034。所述易失性存储器1032可以用同步动态随机访问存储器(SDRAM)、动态随机访问存储器(DRAM)、RAMBUS动态随机访问存储器(RDRAM)和/或任何其他类型的随机访问存储器设备来实现。非易失性存储器1034可以用闪存存储器、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)和/或其他期望类型的存储器设备来实现。
处理器系统1000还包括耦合到总线1040的接口电路1050。接口电路1050可以用任何类型的已知接口标准来实现,所述接口标准例如以太网接口、通用串行总线(USB)、第三代输入/输出接口(3GIO)接口和/或任何其他适当类型的接口。
一个或更多个输入设备1060可以被连接到接口电路1050。一个或多个输入设备1060允许用户向处理器1020输入数据和命令。例如,一个或多个输入设备1060可以用键盘、鼠标、触摸敏感显示器、跟踪板、跟踪球、指向柱(isopoint)和/或语音识别系统实现。
一个或更多个输出设备1070也被连接到接口电路1050。例如,一个或多个输出设备1070可以用显示设备(例如,发光二极管显示器(LED),液晶显示器(LCD),阴极射线管(CRT)显示器,打印机和/或扬声器)实现。因此,除其他设备外,接口电路1050一般包括图形驱动器卡。
此外,处理器系统1000还可以包括一个或更多个大容量储存设备1080以储存软件和数据。这样的一个或多个大容量储存设备1080的实施例包括软盘和驱动器、硬盘驱动器、致密盘和驱动器,以及数字多用途盘(DVD)和驱动器。
接口电路1050还可以包括例如调制解调器或网络接口卡的通信设备,以便于经由网络与外部计算机交换数据。处理器系统1000和所述网络之间的通信链路(link)可以是任何类型的网络连接,例如以太网连接、数字用户线(DSL)、电话线、蜂窝电话系统、同轴电缆等。
对一个或多个输入设备1060、一个或多个输出设备1070、一个或多个大容量储存设备1080和/或所述网络的访问一般由I/O控制器1014以常规的方式控制。具体地,I/O控制器1014完成使处理器1020能够经由总线1040和接口电路1050与一个或多个输入设备1060、一个或多个输出设备1070、一个或多个大容量储存设备1080和/或所述网络通信的功能。
尽管图6中示出的组件被描绘成处理器系统1000内的分离的方框,但是由这些方框中的一些来完成的功能可以被集成到单个半导体电路中,或者可以用两个或更多个分离的集成电路实现。例如,虽然存储器控制器1012和I/O控制器1014被描绘成芯片组1010内的分离的方框,但是本领域的普通技术人员将容易地理解,存储器控制器1012和I/O控制器1014可以被集成到单个半导体电路内。
虽然这里已描述了某些示例性方法、装置和制品,但是本专利的覆盖范围不限于此。相反,本专利覆盖正好落入所附权利要求书在字面上或者在等同原则下的范围内的所有方法、装置和制品。
Claims (18)
1.一种方法,包括:
从第一虚拟机接收与第一本机方法启用调用相关联的第一本机方法启用信息;
从不同于所述第一虚拟机的第二虚拟机接收与第二本机方法启用调用相关联的第二本机方法启用信息;
通过本机方法启用适配器翻译所述第一和第二本机方法启用信息;以及
向模块化本机方法启用组件提供所述翻译的第一和第二本机方法启用信息以生成本机桩。
2.如权利要求1所定义的方法,其中从所述第一虚拟机接收与所述第一本机方法启用调用相关联的所述第一本机方法启用信息的操作包括从所述第一虚拟机接收与平台启用函数调用相关联的信息。
3.如权利要求1定义的方法,其中从所述第一虚拟机接收与所述第一本机方法启用调用相关联的所述第一本机方法启用信息的操作包括接收本机方法签名、方法返回类型、本机库路径和本机库名称中的一个。
4.如权利要求1所定义的方法,其中从所述第一虚拟机接收与所述第一本机方法启用调用相关联的所述第一本机方法启用信息的操作包括从Java虚拟机接收与所述第一本机方法启用调用相关联的所述第一本机方法启用信息,并且,从所述第二虚拟机接收与所述第二本机方法启用调用相关联的所述第二本机方法启用信息的操作包括从公共语言运行时环境接收与所述第二本机方法启用调用相关联的所述第二本机方法启用信息。
5.如权利要求1所定义的方法,其中向所述本机方法启用模块提供所述翻译的第一本机方法启用信息的操作包括向平台启用模块提供所述翻译的第一本机方法启用信息。
6.如权利要求1所定义的方法,还包括基于通过所述本机方法启用模块的所述翻译的第一本机方法启用信息生成编排语言桩,并且将所述编排语言桩储存在所述本机方法启用模块内,所述编排语言桩用于生成所述本机桩。
7.一种装置,包括:
第一虚拟机,所述第一虚拟机提供与第一本机方法启用调用相关联的第一本机方法启用信息;
不同于所述第一虚拟机的第二虚拟机,所述第二虚拟机提供与第二本机方法启用调用相关联的第二本机方法启用信息;本机方法启用模块,所述本机方法启用模块生成本机桩;以及
耦合到所述第一和第二虚拟机和所述本机方法启用模块的本机方法启用适配器,所述本机方法启用适配器接收所述第一和第二本机方法启用信息中的至少一个,翻译所述第一和第二本机方法启用信息中的所述至少一个本机方法启用信息,并且向所述本机方法启用模块提供所述翻译的本机方法启用信息。
8.如权利要求7所定义的装置,其中所述本机方法启用适配器控制与所述第一虚拟机相关联的垃圾回收器。
9.如权利要求7所定义的装置,其中所述第一虚拟机是Java虚拟机,所述第二虚拟机是公共语言运行时环境。
10.如权利要求7所定义的装置,其中所述本机方法启用模块包括平台启用模块。
11.如权利要求7所定义的装置,其中所述本机方法启用模块基于通过所述本机方法启用模块的所述翻译的第一本机方法启用信息生成编排语言桩,并且将所述编排语言桩储存在所述本机方法启用模块内,所述编排语言桩用于生成所述本机桩。
12.如权利要求7所定义的装置,其中所述第一本机方法启用信息包括本机方法签名、方法返回类型、本机库路径和本机库名称。
13.一种处理器系统,包括:
动态随机访问存储器(DRAM);以及
耦合到所述DRAM的处理器,所述处理器识别来自第一虚拟机的与第一本机方法启用调用相关联的第一本机方法启用信息,识别来自不同于所述第一虚拟机的第二虚拟机的与第二本机方法启用调用相关联的第二本机方法启用信息,通过本机方法启用适配器翻译所述第一或第二本机方法启用信息,并且向模块化本机方法启用组件提供所述翻译的第一或第二本机方法启用信息以生成本机桩。
14.如权利要求13所定义的处理器系统,其中所述本机方法启用适配器控制与所述第一虚拟机相关联的垃圾回收器。
15.如权利要求13所定义的处理器系统,其中所述第一虚拟机是Java虚拟机,所述第二虚拟机是公共语言运行时环境。
16.如权利要求13所定义的处理器系统,其中所述模块化本机方法启用组件包括平台启用模块。
17.如权利要求13所定义的处理器系统,其中所述处理器基于通过所述本机方法启用模块的所述翻译的第一本机方法启用信息生成编排语言桩,并且将所述编排语言桩储存在所述模块化本机方法启用组件内,所述编排语言桩用于生成所述本机桩。
18.如权利要求13所定义的处理器系统,其中所述第一本机方法启用信息包括本机方法签名、方法返回类型、本机库路径和本机库名称。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/770,212 | 2004-02-02 | ||
US10/770,212 US7917898B2 (en) | 2004-02-02 | 2004-02-02 | Methods and apparatus to provide a modular native method invocation system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1934532A CN1934532A (zh) | 2007-03-21 |
CN100476721C true CN100476721C (zh) | 2009-04-08 |
Family
ID=34808272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200580009245XA Expired - Fee Related CN100476721C (zh) | 2004-02-02 | 2005-01-14 | 提供模块化本机方法启用系统的方法、和装置和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7917898B2 (zh) |
EP (1) | EP1711890A2 (zh) |
CN (1) | CN100476721C (zh) |
WO (1) | WO2005076127A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106462407A (zh) * | 2014-05-16 | 2017-02-22 | 微软技术许可有限责任公司 | 用于语言无关调度的代码服务 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8191052B2 (en) | 2006-12-01 | 2012-05-29 | Murex S.A.S. | Producer graph oriented programming and execution |
US8332827B2 (en) | 2006-12-01 | 2012-12-11 | Murex S.A.S. | Produce graph oriented programming framework with scenario support |
US8307337B2 (en) | 2006-12-01 | 2012-11-06 | Murex S.A.S. | Parallelization and instrumentation in a producer graph oriented programming framework |
US20080243970A1 (en) * | 2007-03-30 | 2008-10-02 | Sap Ag | Method and system for providing loitering trace in virtual machines |
US8601469B2 (en) * | 2007-03-30 | 2013-12-03 | Sap Ag | Method and system for customizing allocation statistics |
US8667471B2 (en) | 2007-03-30 | 2014-03-04 | Sap Ag | Method and system for customizing profiling sessions |
US8336033B2 (en) * | 2007-03-30 | 2012-12-18 | Sap Ag | Method and system for generating a hierarchical tree representing stack traces |
US8522209B2 (en) * | 2007-03-30 | 2013-08-27 | Sap Ag | Method and system for integrating profiling and debugging |
US8356286B2 (en) * | 2007-03-30 | 2013-01-15 | Sap Ag | Method and system for providing on-demand profiling infrastructure for profiling at virtual machines |
US20080271007A1 (en) * | 2007-04-30 | 2008-10-30 | Bea Systems, Inc. | System and method for managed tuxedo wrapper for .net applications |
CN101458633B (zh) * | 2007-12-13 | 2012-02-15 | 华为软件技术有限公司 | 通过脚本程序访问宿主程序的方法及其系统和装置 |
US8321861B2 (en) * | 2008-02-20 | 2012-11-27 | Arm Limited | Non-native program execution across multiple execution environments |
EP2447836A1 (en) * | 2010-10-18 | 2012-05-02 | Simulity Labs Ltd | Multiple virtual machine engines on a single card |
CN103827880B (zh) | 2011-03-31 | 2017-06-16 | 爱迪德技术有限公司 | 保护非本机代码安全的方法 |
CN103092599A (zh) * | 2011-11-05 | 2013-05-08 | 京瓷办公信息系统株式会社 | 软件开发套件 |
US8949809B2 (en) | 2012-03-01 | 2015-02-03 | International Business Machines Corporation | Automatic pipeline parallelization of sequential code |
US8910137B2 (en) * | 2012-04-13 | 2014-12-09 | International Business Machines Corporation | Code profiling of executable library for pipeline parallelization |
GB2503590B (en) * | 2013-08-14 | 2014-05-14 | Micro Focus Ip Dev Ltd | Interoperability unit |
US8943569B1 (en) * | 2013-10-01 | 2015-01-27 | Myth Innovations, Inc. | Wireless server access control system and method |
US9244665B1 (en) * | 2014-07-17 | 2016-01-26 | Google Inc. | Optimized execution of dynamic languages |
US10025571B1 (en) | 2014-07-17 | 2018-07-17 | Google Llc | Optimized execution of dynamic languages |
EP3021221A1 (en) * | 2014-11-13 | 2016-05-18 | Gemalto Sa | Method for optimizing the execution of a platform-independent method by means of a virtual machine of an integrated circuit card |
US10311217B2 (en) * | 2016-12-09 | 2019-06-04 | Microsoft Technology Licensing, Llc | Application piracy prevention with secure enclave protection of automatically modularized functions |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6066181A (en) * | 1997-12-08 | 2000-05-23 | Analysis & Technology, Inc. | Java native interface code generator |
EP1046984A2 (en) * | 1999-04-23 | 2000-10-25 | Sun Microsystems, Inc. | Automatic stub/adapter generator |
US6167565A (en) * | 1998-01-08 | 2000-12-26 | Microsoft Corporation | Method and system of custom marshaling of inter-language parameters |
CN1341238A (zh) * | 1999-11-17 | 2002-03-20 | 布尔Cp8公司 | 在配备数据处理资源的多用途平台式系统中加载应用的方法,对应的执行系统和方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2242293A (en) * | 1990-01-05 | 1991-09-25 | Apple Computer | Apparatus and method for dynamic linking of computer software components |
US5734904A (en) * | 1994-11-14 | 1998-03-31 | Microsoft Corporation | Method and system for calling one of a set of routines designed for direct invocation by programs of a second type when invoked by a program of the first type |
US5842017A (en) * | 1996-01-29 | 1998-11-24 | Digital Equipment Corporation | Method and apparatus for forming a translation unit |
US6067577A (en) * | 1996-09-30 | 2000-05-23 | Apple Computer, Inc. | Dynamic method resolution for native methods in a dynamic object-oriented programming language |
US5875335A (en) * | 1996-09-30 | 1999-02-23 | Apple Computer, Inc. | Parameter marshaling techniques for dynamic object-oriented programming languages |
US6356957B2 (en) * | 1997-04-03 | 2002-03-12 | Hewlett-Packard Company | Method for emulating native object oriented foundation classes on a target object oriented programming system using a template library |
US6314429B1 (en) * | 1997-10-08 | 2001-11-06 | Mitel Corporation | Bi-directional conversion library |
US6074432A (en) * | 1998-03-19 | 2000-06-13 | Xilinx, Inc. | Method for generating a software class compatible with two or more interpreters |
KR20010072477A (ko) * | 1998-08-13 | 2001-07-31 | 썬 마이크로시스템즈, 인코포레이티드 | 가상 머신 환경에서 네이티브 코드를 변환하고 실행하는방법 및 장치 |
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 |
US6691302B1 (en) * | 2000-05-31 | 2004-02-10 | Siemens Information & Communications Networks, Inc. | Interfacing a service component to a native API |
US6834391B2 (en) * | 2000-11-28 | 2004-12-21 | Sun Microsystems, Inc. | Method and apparatus for automated native code isolation |
US7340730B2 (en) * | 2002-03-18 | 2008-03-04 | Sun Microsystems, Inc. | On demand, network accessible, run time compile server |
US7478408B2 (en) * | 2003-04-04 | 2009-01-13 | Sesma Systems, Inc. | System and method for accessing objects in a platform dependent environment from a platform independent environment |
US7275241B2 (en) * | 2003-11-21 | 2007-09-25 | International Business Machines Corporation | Dynamic instrumentation for a mixed mode virtual machine |
-
2004
- 2004-02-02 US US10/770,212 patent/US7917898B2/en not_active Expired - Fee Related
-
2005
- 2005-01-14 WO PCT/US2005/001274 patent/WO2005076127A2/en active Application Filing
- 2005-01-14 CN CNB200580009245XA patent/CN100476721C/zh not_active Expired - Fee Related
- 2005-01-14 EP EP05705730A patent/EP1711890A2/en not_active Ceased
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6066181A (en) * | 1997-12-08 | 2000-05-23 | Analysis & Technology, Inc. | Java native interface code generator |
US6167565A (en) * | 1998-01-08 | 2000-12-26 | Microsoft Corporation | Method and system of custom marshaling of inter-language parameters |
EP1046984A2 (en) * | 1999-04-23 | 2000-10-25 | Sun Microsystems, Inc. | Automatic stub/adapter generator |
CN1341238A (zh) * | 1999-11-17 | 2002-03-20 | 布尔Cp8公司 | 在配备数据处理资源的多用途平台式系统中加载应用的方法,对应的执行系统和方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106462407A (zh) * | 2014-05-16 | 2017-02-22 | 微软技术许可有限责任公司 | 用于语言无关调度的代码服务 |
CN106462407B (zh) * | 2014-05-16 | 2020-01-07 | 微软技术许可有限责任公司 | 用于语言无关调度的代码服务 |
Also Published As
Publication number | Publication date |
---|---|
CN1934532A (zh) | 2007-03-21 |
US20050172299A1 (en) | 2005-08-04 |
WO2005076127A2 (en) | 2005-08-18 |
US7917898B2 (en) | 2011-03-29 |
WO2005076127A3 (en) | 2006-08-10 |
EP1711890A2 (en) | 2006-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100476721C (zh) | 提供模块化本机方法启用系统的方法、和装置和系统 | |
CN100594479C (zh) | 优化虚拟机环境中的应用程序接口的方法和装置 | |
US11385872B2 (en) | Extending a virtual machine instruction set architecture | |
CN107041158B (zh) | 用于模块化反射的限制性访问控制 | |
US7657881B2 (en) | Using optimized libraries to improve performance of deployed application code at runtime | |
US10684827B2 (en) | Generating dynamic modular proxies | |
US8359570B2 (en) | Adaptive scripting tool | |
CN107924326B (zh) | 对经更新的类型的迁移方法进行覆盖 | |
US8799932B2 (en) | System and method for support of legacy communications protocols in a smart card | |
US20220300264A1 (en) | Implementing optional specialization when compiling code | |
US20210294586A1 (en) | Modeling foreign functions using executable references | |
US20050055678A1 (en) | Method and apparatus for managing software in computer system using virtual machine | |
US10394610B2 (en) | Managing split packages in a module system | |
EP1046985A2 (en) | File portability techniques | |
US11243876B2 (en) | Techniques for accessing off-heap memory | |
US11875168B2 (en) | Optimizing execution of foreign method handles on a virtual machine |
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: 20090408 Termination date: 20210114 |