CN110727504B - 代码执行方法、装置和渲染设备 - Google Patents
代码执行方法、装置和渲染设备 Download PDFInfo
- Publication number
- CN110727504B CN110727504B CN201911001932.7A CN201911001932A CN110727504B CN 110727504 B CN110727504 B CN 110727504B CN 201911001932 A CN201911001932 A CN 201911001932A CN 110727504 B CN110727504 B CN 110727504B
- Authority
- CN
- China
- Prior art keywords
- execution
- code
- instruction
- virtual machine
- engine
- 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.)
- Active
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/445—Program loading or initiating
-
- 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
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
- Digital Computer Display Output (AREA)
Abstract
本申请公开了代码执行方法、装置和渲染设备,涉及计算机显示技术领域。具体实现方案为:代码执行方法可以应用于虚拟机,包括:接收来自执行引擎的初始化指令,初始化指令为执行引擎加载目标代码得到的指令;根据初始化指令向注册组件发送注册指令,以创建执行目标代码所需的封装对象;根据封装对象与操作***的原生代码的映射关系,编译得到目标代码对应的执行代码;将执行代码发送至执行引擎中执行。本申请实施例能够通过虚拟机控制注册组件创建已经封装好的封装对象,将目标代码的编译工作转移到虚拟机执行,执行引擎可以主要控制代码执行过程,因此提高了代码执行效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及计算机显示技术领域。
背景技术
渲染引擎的主要作用是将资源文件转化为用户可见的结果。相关技术中,在设备端通过渲染引擎对资源文件进行编译,以实现渲染效果。但是,渲染引擎的编译过程需要进行大量的计算,存在渲染速度慢等问题。
发明内容
本申请实施例提供了一种代码执行方法,应用于虚拟机,该代码执行方法包括:
接收来自执行引擎的初始化指令,初始化指令为执行引擎加载目标代码得到的指令;
根据初始化指令向注册组件发送注册指令,以创建执行目标代码所需的封装对象;
根据封装对象与操作***的原生代码的映射关系,编译得到目标代码对应的执行代码;
将执行代码发送至执行引擎中执行。
本申请实施例能够通过虚拟机控制注册组件创建已经封装好的封装对象,将目标代码的编译工作转移到虚拟机执行,执行引擎可以主要控制代码执行过程,因此提高了代码执行效率。
在一种实施方式中,初始化指令中包括需要初始化的封装对象的标识,根据初始化指令向注册组件发送注册指令,以创建执行目标代码所需的封装对象,包括:
向注册组件发送包括需要注册的封装对象的标识的注册指令,由注册组件根据需要注册的封装对象的标识在封装模块中创建对应的封装对象。
上述实施方式中,通过虚拟机控制注册组件在封装模块中创建封装对象,从而根据封装对象与操作***的原生代码的映射关系,编译得到目标代码对应的执行代码,有利于提高代码编译效率和执行效率。
在一种实施方式中,该代码执行方法还包括:
接收来自执行引擎的执行指令,执行指令为执行引擎执行该执行代码得到的指令;
根据执行指令向调用组件发送调用指令,以调用封装模块中的封装对象。
上述实施方式中,虚拟机在收到执行引擎的执行指令后,可以控制调用组件调用已经创建的封装对象,进而使得操作***执行所调用的封装对象对应的原生代码。这样,由于将代码的编译和执行分离,可以提高代码编译和执行效率。
在一种实施方式中,执行指令中包括需要执行的封装对象的标识、方法名和参数,调用组件为唤醒器,根据执行指令向调用组件发送调用指令,以调用封装模块中的封装对象,包括:
向唤醒器发送包括需要执行的封装对象的标识、方法名和参数的调用指令,由唤醒器在封装模块中查找到需要执行的封装对象的标识对应的封装对象后,调用需要执行的封装对象的方法名对应的方法,并加载需要执行的封装对象的参数,以在操作***中执行需要执行的封装对象对应的原生代码。
上述实施方式中,通过虚拟机控制唤醒器利用封装对象的标识、方法名和参数的在封装模块中调用各封装对象,以在操作***中执行各封装对象对应的原生代码,能够将代码的映射和调用分离,可以连续调用多个封装对象,实现了对象的重用,进而提高代码执行效率。
在一种实施方式中,接收来自执行引擎的初始化指令,包括:通过桥接器接收来自执行引擎的初始化指令。
在一种实施方式中,将执行代码发送至执行引擎中执行,包括:通过桥接器将执行代码发送至执行引擎中执行。
上述实施方式中,执行引擎与虚拟机通过桥接器进行消息的交互,可以实现目标代码与原生代码的消息传递,充分利用了操作***自身的能力,有利于在提高代码执行效率的同时保证安全性。
在一种实施方式中,该代码执行方法还包括:
接收来自封装模块的反馈信息,反馈信息包括封装模块从操作***获取的执行结果;
将反馈信息发送至执行引擎。
上述实施方式中,虚拟机可以接收封装模块的反馈信息,将操作***的执行结果等通过虚拟机反馈至执行引擎,使得执行引擎能够结合反馈信息继续执行后续的执行代码。
本申请实施例还提供了一种代码执行装置,应用于虚拟机,该装置包括:
第一接收单元,用于接收来自执行引擎的初始化指令,初始化指令为执行引擎加载目标代码得到的指令;
第一发送单元,用于根据初始化指令向注册组件发送注册指令,以创建执行目标代码所需的封装对象;
编译单元,用于根据封装对象与操作***的原生代码的映射关系,编译得到目标代码对应的执行代码;
第二发送单元,用于将执行代码发送至执行引擎中执行。
在一种实施方式中,初始化指令中包括需要初始化的封装对象的标识,第一发送单元还用于向注册组件发送包括需要注册的封装对象的标识的注册指令,由注册组件根据需要注册的封装对象的标识在封装模块中创建对应的封装对象。
在一种实施方式中,该装置还包括:
第二接收单元,用于接收来自执行引擎的执行指令,执行指令为执行引擎执行该执行代码得到的指令;
第三发送单元,用于根据执行指令向调用组件发送调用指令,以调用封装模块中的封装对象。
在一种实施方式中,执行指令中包括需要执行的封装对象的标识、方法名和参数,调用组件为唤醒器,第三发送单元还用于向唤醒器发送包括需要执行的封装对象的标识、方法名和参数的调用指令,由唤醒器在封装模块中查找到需要执行的封装对象的标识对应的封装对象后,调用需要执行的封装对象的方法名对应的方法,并加载需要执行的封装对象的参数,以在操作***中执行需要执行的封装对象对应的原生代码。
在一种实施方式中,该装置还包括:
第三接收单元,用于接收来自封装模块的反馈信息,反馈信息包括封装模块从操作***获取的执行结果;
第四发送单元,用于将反馈信息发送至执行引擎。
本申请实施例还提供了一种渲染设备,包括:
执行引擎,用于向虚拟机发送初始化指令,初始化指令为执行引擎加载目标代码得到的指令;接收虚拟机返回的与目标代码对应的执行代码;
虚拟机,用于执行本申请任一实施例中的代码执行方法;
注册组件,用于接收来自虚拟机的注册指令,以创建执行目标代码所需的封装对象。
在一种实施方式中,执行引擎还用于向虚拟机发送执行指令,执行指令为执行引擎执行该执行代码得到的指令;
渲染设备还包括:
调用组件,用于接收来自虚拟机的调用指令,以调用封装模块中的封装对象;
封装模块,包括执行目标代码所需的至少一个封装对象。
在一种实施方式中,该渲染设备还包括:桥接器,用于将来自执行引擎的初始化指令发送到虚拟机,将来自虚拟机的执行代码发送至执行引擎。
本申请实施例还提供了一种电子设备,包括:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被至少一个处理器执行的指令,该指令被至少一个处理器执行,以使至少一个处理器能够执行本申请任一实施例中的代码执行方法。
本申请实施例还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行本申请任一实施例中的代码执行方法。
上述申请中的一个实施例具有如下优点或有益效果:本申请实施例能够通过虚拟机控制注册组件创建已经封装好的封装对象,将目标代码的编译工作转移到虚拟机执行,执行引擎可以主要控制代码执行过程,因此提高了代码执行效率。
上述实施方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是根据本申请实施例的代码执行方法的流程示意图;
图2A和图2B是根据本申请实施例的代码执行方法中代码的示意图;
图3是根据本申请实施例的代码执行方法的应用示例的示意图;
图4是根据本申请实施例的代码执行方法的流程示意图;
图5是根据本申请实施例的代码执行方法的流程示意图;
图6是根据本申请实施例的代码执行装置的结构框图;
图7是根据本申请实施例的代码执行装置的结构框图;
图8是根据本申请实施例的渲染设备的结构框图;
图9是根据本申请实施例的渲染设备的结构框图;
图10是根据本申请实施例中渲染设备的封装接口的示意图;
图11是根据本申请实施例中渲染设备的应用场景的示意图;
图12是用来实现本申请实施例的代码执行方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本申请实施例的代码执行方法的流程示意图。如图1所示,该代码执行方法可以应用于虚拟机,该代码执行方法可以包括:
步骤S11、接收来自执行引擎的初始化指令,初始化指令为执行引擎加载目标代码得到的指令。
步骤S12、根据初始化指令向注册组件发送注册指令,以在封装模块中创建执行目标代码所需的封装对象。其中,封装对象是根据操作***的原生代码预先封装得到的。
步骤S13、根据封装对象与操作***的原生代码的映射关系,编译得到目标代码对应的执行代码。
步骤S14、将执行代码发送至执行引擎中执行。
在本申请实施例中,执行引擎可以对目标代码进行初始化,并执行目标代码对应的执行代码。目标代码可以包括需要实现某种功能例如渲染效果的代码。例如,参见图2A,目标代码中可以包括渲染某个图像组件(Image,也可以称为图片组件)所需的代码,代码中可以包括该图像组件的类型“type”,图像地址“source”、伸缩方式“scale”、宽度“width”、高度“height”等属性。再如,参见图2B,目标代码中可以包括渲染某个滑动窗口组件(ScrollView)所需的代码,代码中可以包括该滑动窗口组件的类型“type”、组件“item”等属性,也可以包括方向“direction”、宽度“width”、高度“height”等属性。
在一种示例中,可以在服务器利用渲染模板生成便于设备端执行的目标代码。设备端接收到目标代码后,可以运行这些代码,并在屏幕显示出来。参见图3,执行引擎31收到JavaScript(简称JS)格式的目标代码例如产品代码(product code)后,在加载该目标代码的过程中,可以向虚拟机32(例如Atom VM)发出初始化指令。
本申请实施例能够通过虚拟机控制注册组件创建已经封装好的封装对象,将目标代码的编译工作转移到虚拟机执行,执行引擎可以主要控制代码执行过程,因此提高了代码执行效率。对于实现渲染效果的目标代码,可以提高渲染速度,优化渲染效果。
在一种实施方式中,初始化指令中包括需要初始化的封装对象的标识。在另一种实施方式中,初始化指令中除了可以包括封装对象的封装对象的标识之外,还可以包括封装对象的方法名和/或参数。其中,不同的目标代码需要初始化的封装对象的数量和类型可能不同。一个封装对象可以包括一个或多个方法名,每个方法名可以对应操作***中与交互相关的某个函数名。例如,一个图片的封装对象,在Android***中对应的是Image(图像组件),设置图像资源的方法对应Image操作***中setImage方法。参数可以包括执行某个方法名对应的方法所需的资源。例如,某个图像的统一资源定位符(uniform resourcelocator,URL)地址。
在步骤S12中,根据初始化指令向注册组件发送注册指令,以创建执行目标代码所需的封装对象,包括:向注册组件发送包括需要注册的封装对象的标识的注册指令,由注册组件根据需要注册的封装对象的标识在封装模块中创建对应的封装对象。通过虚拟机控制注册组件在封装模块中创建封装对象,从而根据封装对象与操作***的原生代码的映射关系,编译得到目标代码对应的执行代码,有利于提高代码编译效率和执行效率。
在另一种实施方式中,注册指令中除了可以包括封装对象的封装对象的标识之外,还可以包括封装对象的方法名和/或参数。此外,初始化指令和注册指令的内容和格式可以相同,也可以不同。也就是说,虚拟机既可以对收到的初始化指令的内容和格式进行修改后发给注册组件,也可以不修改,将初始化指令作为注册指令直接转发给注册组件。
在一种示例中,参见图3,虚拟机32收到初始化指令后,可以向注册组件33例如封装注册组件(Wrapper Registry)发送注册指令。注册组件33收到注册指令后,可以向封装模块(Wrapper)34发送创建指令,在创建指令中包括目标代码中需要注册的封装对象的标识、方法名和参数。封装模块34可以根据该创建指令创建执行目标代码所需的封装对象341。封装对象的类型可以有多种,包括但不限于图像组件(Image)、视图组件(View)、文本组件(Text)、图像视图组件(ImageView)、页面组件(Pager)、页面管理组件(PageManager)、容器(Container)组件、滑动窗口组件(ScrollView)、帧组件(Frame)、列表组件(List)、网络组件(Network)等。
在一种示例中,如果某一部分目标代码对应的封装对象为图像组件(Image),该封装对象的标识可以为“Image”,方法名可以为setImage,参数可以包括宽度、长度和URL地址等。
在封装模块中创建各封装对象,可以获得各封装对象与操作***的原生代码的映射关系。注册并创建完成封装对象后,封装模块可以将该映射关系返回注册组件,由注册组件将该映射关系返回到虚拟机,由虚拟机根据该映射关系编译得到目标代码对应的执行代码。然后,虚拟机可以将该执行代码发送到执行引擎中执行。
在一种实施方式中,如图4所示,该代码执行方法还包括:
步骤S15、接收来自执行引擎的执行指令,执行指令为执行引擎执行执行代码得到的指令。
步骤S16、根据执行指令向调用组件发送调用指令,以调用封装模块中的封装对象,进而使得操作***执行所调用的封装对象对应的原生代码。虚拟机在收到执行引擎的执行指令后,可以控制调用组件调用已经创建的封装对象,进而使得操作***执行所调用的封装对象对应的原生代码。这样,由于将代码的编译和执行分离,可以提高代码编译和执行效率。
在本申请实施例中,执行目标代码所需的封装对象可能有一个或者多个。如果执行目标代码需要多个封装对象,注册和调用过程可以串行也可以并行。参见图3,虚拟机32可以在通过注册组件串行地创建完所有封装对象后,再通过调用组件例如唤醒器(Invoker)35调用各封装对象;也可以在通过注册组件创建各封装对象的过程中,并行地通过调用组件调用已经创建好的封装组件。
在一种实施方式中,执行指令中包括需要执行的封装对象的标识、方法名和参数,调用组件为唤醒器(Invoker),根据执行指令向调用组件发送调用指令,以调用封装模块中的封装对象,包括:向唤醒器发送包括需要执行的封装对象的标识、方法名和参数的调用指令。由唤醒器在封装模块中查找到需要执行的封装对象的标识对应的封装对象后,调用需要执行的封装对象的方法名对应的方法,并加载需要执行的封装对象的参数,以在操作***中执行需要执行的封装对象对应的原生代码。通过虚拟机控制唤醒器利用封装对象的标识、方法名和参数的在封装模块中调用各封装对象,以在操作***中执行各封装对象对应的原生代码,能够将代码的映射和调用分离,可以连续调用多个封装对象,实现了对象的重用,进而提高代码执行效率。
在执行该执行代码的过程中,执行引擎可以向虚拟机发送执行指令。虚拟机收到执行指令后,可以根据其中的封装对象的标识、方法名和参数,向唤醒器发送调用指令。例如,某一部分执行代码中包括的封装对象的标识为“Image”,方法名为setImage,参数为宽度、长度和URL地址。唤醒器收到调用指令后,可以在封装模块中查找到需要执行的封装对象的标识“Image”对应的封装对象、某个图像组件。然后,调用该图像组件的方法名对应的方法,并加载该图像组件的长度、宽度和URL地址中的图像等。在操作***中执行需要该图像组件的原生代码,从而在屏幕上显示该图像组件的渲染效果。
在本申请实施例中,执行指令和调用指令的内容和格式可以相同,也可以不同。也就是说,虚拟机既可以对收到的执行指令的内容和格式进行修改后发给调用组件,也可以不修改,将执行指令作为调用指令直接转发给调用组件。
如果执行代码中包括多个需要执行的封装对象,执行引擎可以按照执行代码中的逻辑顺序,向虚拟机发送多条执行指令。由虚拟机向唤醒器发送多条调用指令,依次调用这些封装对象。例如,如果需要执行的封装对象包括图像组件、滑动窗口组件和列表组件。执行引擎可以按照执行代码的逻辑顺序控制这些组件的调用顺序为:先显示图像组件,再显示滑动窗口组件,最后显示列表组件。执行引擎可以通过虚拟机和唤醒器按照该顺序依次调用这些图像组件、滑动窗口组件和列表组件。
在一种实施方式中,如图5所示,该代码执行方法还包括:
步骤S17、接收来自封装模块的反馈信息,反馈信息包括封装模块从操作***获取的执行结果。
步骤S18、将反馈信息发送至执行引擎。
封装模块从操作***获取封装对象对应的原生代码的执行结果后,可以向虚拟机发送包括该执行结果的反馈信息。如果操作***中具有其他变化,例如***电量低,封装模块也可以通过反馈信息发送给虚拟机。然后,虚拟机可以将反馈信息发送至执行引擎。执行引擎可以结合反馈信息继续执行后续的执行代码。例如,执行引擎收到***电量低的反馈消息后,会在执行完当前代码的时候,为用户反馈电量低的信息。
在一种实施方式中,在步骤S11中,接收来自执行引擎的初始化指令,包括:通过桥接器接收来自执行引擎的初始化指令。
在一种实施方式中,在步骤S14中,将执行代码发送至执行引擎中执行,包括:通过桥接器将执行代码发送至执行引擎中执行。
参见图3,在执行引擎和虚拟机之间可以通过桥接器(Bridge)进行消息的交互,可以实现目标代码与原生代码的消息传递,充分利用了操作***自身的能力,有利于在提高代码执行效率的同时保证安全性。虚拟机通过桥接器接收来自执行引擎的初始化指令和执行指令。虚拟机通过桥接器向执行引擎发送编译得到的执行代码,以及从操作***获得的各种反馈信息,使得执行引擎能够结合反馈信息继续执行后续的执行代码。
图6是根据本申请实施例的代码执行装置的结构框图。如图6所示,该代码执行装置可以应用于虚拟机,该装置可以包括:
第一接收单元61,用于接收来自执行引擎的初始化指令,初始化指令为执行引擎加载目标代码得到的指令;
第一发送单元62,用于根据初始化指令向注册组件发送注册指令,以创建执行目标代码所需的封装对象;
编译单元63,用于根据封装对象与操作***的原生代码的映射关系,编译得到目标代码对应的执行代码;
第二发送单元64,用于将执行代码发送至执行引擎中执行。
在一种实施方式中,初始化指令中包括需要初始化的封装对象的标识、方法名和参数,第一发送单元62还用于向注册组件发送包括需要注册的封装对象的标识、方法名和参数的注册指令,由注册组件根据需要注册的封装对象的标识、方法名和参数在封装模块中创建对应的封装对象。
在一种实施方式中,如图7所示,该装置还包括:
第二接收单元71,用于接收来自执行引擎的执行指令,执行指令为执行引擎执行上述执行代码得到的指令;
第三发送单元72,用于根据执行指令向调用组件发送调用指令,以调用封装模块中的封装对象,进而使得操作***执行所调用的封装对象对应的原生代码。
在一种实施方式中,执行指令中包括需要执行的封装对象的标识、方法名和参数,调用组件为唤醒器。第三发送单元72还用于向唤醒器发送包括需要执行的封装对象的标识、方法名和参数的调用指令。由唤醒器在封装模块中查找到需要执行的封装对象的标识对应的封装对象后,调用需要执行的封装对象的方法名对应的方法,并加载需要执行的封装对象的参数,以在操作***中执行需要执行的封装对象对应的原生代码。
在一种实施方式中,该装置还包括:
第三接收单元73,用于接收来自封装模块的反馈信息,反馈信息包括封装模块从操作***获取的执行结果;
第四发送单元74,用于将反馈信息发送至执行引擎。
本申请实施例代码执行装置中的各单元的功能可以参见上述代码执行方法中的对应描述,在此不再赘述。
图8是根据本申请实施例的渲染设备的结构框图。如图8所示,该渲染设备可以包括:
执行引擎81,用于向虚拟机发送初始化指令,初始化指令为执行引擎加载目标代码得到的指令;接收虚拟机返回的与目标代码对应的执行代码;
虚拟机82,用于执行本申请任一实施例的代码执行方法,具体可以参见上述代码执行方法中的对应描述,在此不再赘述。
注册组件83,用于接收来自虚拟机的注册指令,以创建执行目标代码所需的封装对象。
在一种实施方式中,执行引擎81还用于向虚拟机发送执行指令,执行指令为执行引擎执行上述执行代码得到的指令。
在一种实施方式中,如图9所示,渲染设备还包括:
调用组件84,用于接收来自虚拟机的调用指令,以调用封装模块中的封装对象。
封装模块85,包括执行目标代码所需的至少一个封装对象851。
在一种实施方式中,渲染设备还包括:桥接器86,用于将来自执行引擎的初始化指令发送到虚拟机,将来自虚拟机的执行代码发送至执行引擎。桥接器86还可以将执行引擎的执行指令发送给虚拟机,接收虚拟机返回的执行结果。
在一种应用示例中,参见图3,渲染设备可以包括执行引擎31、虚拟机32、封装注册组件(wrapper registry)33、唤醒器(Invoker)35和桥接器(Bridge)37等。以执行引擎为V8引擎、虚拟机为AtomVM为例,说明渲染设备执行目标代码的过程。本示例中,主要利用V8引擎的代码执行功能,由虚拟机完成代码编译。
在执行引擎31中加载目标代码,生成初始化指令。虚拟机32可以管理封装(wrapper)对象,实现目标代码到设备端上封装(wrapper)对象的映射。另外,虚拟机32还可以管理执行引擎及目标代码的运行环境,例如执行v8引擎初始化、框架(framework)初始化等。虚拟机通过桥接器与目标代码进行信息交互,桥接器37是目标代码与原生代码间的唯一消息通路。
执行引擎31加载目标代码,确定需要调用端上哪些封装对象(wrapper)的方法后,可以将初始化指令通过桥接器37发送给虚拟机32。其中每一条指令可以包括,对象标识(Identification,id)、方法名和参数。例如,对象标识为“image”,方法名为“setImage”,参数为{a,b,c}。
虚拟机32可以根据对象标识找到对应的封装对象(wrapper)341,通过唤醒器(Invoker)35,实现封装对象341的方法名到对应原生代码的调用,从而根据方法名完成对应方法的调用。
调用方法后,可能会有执行结果回调给目标代码。封装对象341还可能产生各种端上的事件。这两种情况都可以通过VM统一的通路(桥接器)将消息传递给目标代码。
本申请实施例,通过虚拟机的机制整合了执行引擎和原生代码的封装映射,既保证了目标代码的执行效率,又保证了***的安全性。
在一种实施方式中,如图10所示,在预先对设备端上的操作***中的原生代码进行封装后,可以得到各封装对象对应的标识和方法名。例如通过封装(wrapper)类对端上的组件和能力进行封装,提供了适合上层调用的接口,方便对端上的封装对象进行管理。封装对象(wrapper)可以包括内部实现和第三方开发者扩展。通过封装注册组件(wrapperregistry)33统一将各类封装对象能够让上层注册,使执行引擎知道具体封装对象包括哪些组件以及封装对象中有什么方法。封装注册组件(wrapper registry)也提供了创建各类封装对象的接口,这样就可以在封装模块34中创建各种封装对象341了。创建出封装对象之后,执行引擎31可以通过虚拟机32和唤醒器35对封装对象进行操作,调用封装对象341的方法。
上述操作***的所有封装对象的相当于组成了封装对象池。不同的目标代码可能需要创建不同的封装对象。根据目标代码创建出的包括一个或多个封装对象的动态模块,可以称之为封装模块34。如图10所示,封装模块34可以提供多个API(应用程序编程接口,Application Programming Interface),例如创建接口342、调用接口343和反馈接口344。封装注册组件33可以提供的API为注册接口331。封装注册组件33可以通过注册接口331接收来自虚拟机的注册指令,注册指令中可以包括目标代码中需要注册的封装对象的标识、方法名和参数(注册指令中也可以只包括封装对象的标识,或者只包括封装对象的标识和方法名,或者只包括封装对象的标识和参数)。封装注册组件33可以通过创建接口342向封装模块34发送创建指令,创建指令中包括目标代码中需要注册的封装对象的标识、方法名和参数(创建指令中也可以只包括封装对象的标识,或者只包括封装对象的标识和方法名,或者只包括封装对象的标识和参数)。封装模块34根据目标代码中需要注册的各封装对象的标识、方法名和参数,在封装模块34中创建对应的各封装对象341。注册完成后,封装模块34可以通过创建接口342向封装注册组件33返回所创建的封装对象与原生代码的映射关系。封装注册组件33通过注册接口331向虚拟机32返回所创建的封装对象与原生代码的映射关系。虚拟机32根据上述映射关系中编译得到目标代码对应的执行代码。此外,虚拟机还可以向唤醒器35发送调用指令。由唤醒器35通过调用接口343,调用封装模块34中已经创建好的封装对象341,执行封装对象在操作***36中对应的原生代码。
在本申请实施例中,注册指令和创建指令的内容和格式可以相同,也可以不同。也就是说,注册组件既可以对收到的注册指令的内容和格式进行修改后发给封装模块,也可以不修改,将注册指令作为创建指令直接转发给封装模块。
本申请实施例对原生代码直接封装,通过注册机制,对外开放注册和调用,由于是动态注册,便于对原生代码的匹配升级。上述的操作***可以包括但不限于例如安卓(Android)***、iOS***或基于Linux的其他***。
如图11所示,为本申请实施例的渲染***的示意图。该渲染***可以是一种面向智能语音设备的可视渲染***。该渲染***可以包括技能服务、对话式AI***、独立渲染服务、CDN服务、智能语音设备等。
一个总体的业务流程如下:
1)用户通过语音询问智能语音设备,智能语音设备将用户的询问传给对话式AI***。智能语音设备即上述实施例中所述的设备端。设备端可以带有屏幕。
2)对话式AI***经自动语音识别(ASR,Automatic Speech Recognition)、自然语言理解(NLU,Natural Language Understanding)处理后,将意图传给技能服务。技能服务可以是提供待渲染内容的服务器。
3)技能服务向对话式AI***返回待渲染内容,可以包括内容和资源。
4)对话式AI***将待渲染内容、智能语音设备的信息、技能服务的信息传输给独立渲染服务器。
5)独立渲染服务将待渲染内容中的静态数据传输至内容分发网络(CDN,ContentDelivery Network)服务。
6)独立渲染服务根据第4)步中接收的内容,选择与智能语音设备适配的渲染模板,采用选择的渲染模板对待渲染内容进行渲染,生成便于智能语音设备执行的目标代码,并将目标代码返回给向对话式AI***。
7)向对话式AI***将收到的目标代码、以及相关的上下文信息等数据返回给智能语音设备。
8)智能语音设备中的渲染执行引擎运行上述目标代码,并在屏幕上显示出来。对于待渲染内容中的静态资源,智能语音设备可以直接从CDN拉取。
其中,渲染执行引擎的结构可以参见上述实施例中的渲染设备。例如,参见图3,渲染执行引擎包括执行引擎31、虚拟机32、封装注册组件33、唤醒器35和桥接器37等。在执行引擎31中加载目标代码,通过桥接器向虚拟机32发送执行目标代码所需的封装对象的标识、方法名和参数。虚拟机32通过封装注册组件33在封装模块34中创建各封装对象。创建完成后,虚拟机32可以通过唤醒器35调用封装对象(wrapper)341,实现封装对象341的方法名到对应原生代码的调用,从而根据方法名完成对应方法的调用。调用方法后,可能会有执行结果回调给目标代码。封装对象341还可能产生各种端上的事件。封装模块将这些消息反馈给虚拟机后,虚拟机通过桥接器将这些消息传递给执行引擎。
渲染执行引擎的具体工作原理可以参见上述实施例中的代码执行方法、代码执行装置和渲染设备,以及图3、图10、图11等的相关描述。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图12所示,是根据本申请实施例的代码执行方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图12所示,该电子设备包括:一个或多个处理器901、存储器902,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示图形用户界面(Graphical User Interface,GUI)的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器***)。图12中以一个处理器901为例。
存储器902即为本申请所提供的非瞬时计算机可读存储介质。其中,存储器存储有可由至少一个处理器执行的指令,以使至少一个处理器执行本申请所提供的代码执行方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的代码执行方法。
存储器902作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的代码执行方法对应的程序指令/模块(例如,附图6所示的第一接收单元61、第一发送单元62、编译单元63和第二发送单元64)。处理器901通过运行存储在存储器902中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的代码执行方法。
存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据代码执行方法的电子设备的使用所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至代码执行方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
代码执行方法的电子设备还可以包括:输入装置903和输出装置904。处理器901、存储器902、输入装置903和输出装置904可以通过总线或者其他方式连接,图12中以通过总线连接为例。
输入装置903可接收输入的数字或字符信息,以及产生与代码执行方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置904可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(Liquid Crystal Display,LCD)、发光二极管(Light EmittingDiode,LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、专用集成电路(Application Specific Integrated Circuits,ASIC)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(programmable logic device,PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(Cathode Ray Tube,阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(Local Area Network,LAN)、广域网(Wide Area Network,WAN)和互联网。
计算机***可以包括设备端和服务器。设备端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有设备端-服务器关系的计算机程序来产生设备端和服务器的关系。
根据本申请实施例的技术方案,能够通过虚拟机控制注册组件创建已经封装好的封装对象,将目标代码的编译工作转移到虚拟机执行,执行引擎可以主要控制代码执行过程,因此提高了代码执行效率。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (15)
1.一种代码执行方法,其特征在于,应用于虚拟机,所述代码执行方法包括:
接收来自执行引擎的初始化指令,所述初始化指令为所述执行引擎加载目标代码得到的指令;
根据所述初始化指令向注册组件发送注册指令,以创建执行所述目标代码所需的封装对象;
根据所述封装对象与操作***的原生代码的映射关系,编译得到所述目标代码对应的执行代码;
将所述执行代码发送至所述执行引擎中执行;
接收来自所述执行引擎的执行指令,所述执行指令为所述执行引擎执行所述执行代码得到的指令;
根据所述执行指令向调用组件发送调用指令,以调用封装模块中的封装对象。
2.根据权利要求1所述的代码执行方法,其特征在于,所述初始化指令中包括需要初始化的封装对象的标识,根据所述初始化指令向注册组件发送注册指令,以创建执行所述目标代码所需的封装对象,包括:
向所述注册组件发送包括需要注册的封装对象的标识的所述注册指令,由所述注册组件根据需要注册的封装对象的标识在封装模块中创建对应的封装对象。
3.根据权利要求1所述的代码执行方法,其特征在于,所述执行指令中包括需要执行的封装对象的标识、方法名和参数,所述调用组件为唤醒器,根据所述执行指令向调用组件发送调用指令,以调用所述封装模块中的封装对象,包括:
向所述唤醒器发送包括需要执行的封装对象的标识、方法名和参数的所述调用指令,由所述唤醒器在所述封装模块中查找到需要执行的封装对象的标识对应的封装对象后,调用需要执行的封装对象的方法名对应的方法,并加载需要执行的封装对象的参数,以在所述操作***中执行需要执行的封装对象对应的原生代码。
4.根据权利要求1至3中任一项所述的代码执行方法,其特征在于,接收来自执行引擎的初始化指令,包括:通过桥接器接收来自所述执行引擎的所述初始化指令。
5.根据权利要求1至3中任一项所述的代码执行方法,其特征在于,将所述执行代码发送至所述执行引擎中执行,包括:通过桥接器将所述执行代码发送至所述执行引擎中执行。
6.根据权利要求1至3中任一项所述的代码执行方法,其特征在于,还包括:
接收来自所述封装模块的反馈信息,所述反馈信息包括封装模块从所述操作***获取的执行结果;
将所述反馈信息发送至所述执行引擎。
7.一种代码执行装置,其特征在于,应用于虚拟机,所述装置包括:
第一接收单元,用于接收来自执行引擎的初始化指令,所述初始化指令为所述执行引擎加载目标代码得到的指令;
第一发送单元,用于根据所述初始化指令向注册组件发送注册指令,以创建执行所述目标代码所需的封装对象;
编译单元,用于根据所述封装对象与操作***的原生代码的映射关系,编译得到所述目标代码对应的执行代码;
第二发送单元,用于将所述执行代码发送至所述执行引擎中执行;
第二接收单元,用于接收来自所述执行引擎的执行指令,所述执行指令为所述执行引擎执行所述执行代码得到的指令;
第三发送单元,用于根据所述执行指令向调用组件发送调用指令,以调用封装模块中的封装对象。
8.根据权利要求7所述的装置,其特征在于,所述初始化指令中包括需要初始化的封装对象的标识,所述第一发送单元还用于向所述注册组件发送包括需要注册的封装对象的标识的所述注册指令,由所述注册组件根据需要注册的封装对象的标识在封装模块中创建对应的封装对象。
9.根据权利要求7所述的装置,其特征在于,所述执行指令中包括需要执行的封装对象的标识、方法名和参数,所述调用组件为唤醒器,所述第三发送单元还用于向所述唤醒器发送包括需要执行的封装对象的标识、方法名和参数的所述调用指令,由所述唤醒器在所述封装模块中查找到需要执行的封装对象的标识对应的封装对象后,调用需要执行的封装对象的方法名对应的方法,并加载需要执行的封装对象的参数,以在所述操作***中执行需要执行的封装对象对应的原生代码。
10.根据权利要求7至9中任一项所述的装置,其特征在于,还包括:
第三接收单元,用于接收来自所述封装模块的反馈信息,所述反馈信息包括封装模块从所述操作***获取的执行结果;
第四发送单元,用于将所述反馈信息发送至所述执行引擎。
11.一种渲染设备,其特征在于,包括:
执行引擎,用于向虚拟机发送初始化指令,所述初始化指令为所述执行引擎加载目标代码得到的指令;接收所述虚拟机返回的与所述目标代码对应的执行代码;
虚拟机,用于执行权利要求1至6中任一项所述的方法;
注册组件,用于接收来自所述虚拟机的注册指令,以创建执行所述目标代码所需的封装对象。
12.根据权利要求11所述的渲染设备,其特征在于,
所述执行引擎还用于向所述虚拟机发送执行指令,所述执行指令为所述执行引擎执行所述执行代码得到的指令;
所述渲染设备还包括:
调用组件,用于接收来自所述虚拟机的调用指令,以调用封装模块中的封装对象;
封装模块,包括执行目标代码所需的至少一个封装对象。
13.根据权利要求11或12所述的渲染设备,其特征在于,还包括:桥接器,用于将来自所述执行引擎的所述初始化指令发送到虚拟机,将来自所述虚拟机的所述执行代码发送至所述执行引擎。
14.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至6中任一项所述的代码执行方法。
15.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1至6中任一项所述的代码执行方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911001932.7A CN110727504B (zh) | 2019-10-21 | 2019-10-21 | 代码执行方法、装置和渲染设备 |
US16/876,936 US11294651B2 (en) | 2019-10-21 | 2020-05-18 | Code execution method, device, and rendering apparatus |
JP2020088761A JP7048663B2 (ja) | 2019-10-21 | 2020-05-21 | コード実行方法、装置、レンダリングデバイス、記憶媒体、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911001932.7A CN110727504B (zh) | 2019-10-21 | 2019-10-21 | 代码执行方法、装置和渲染设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110727504A CN110727504A (zh) | 2020-01-24 |
CN110727504B true CN110727504B (zh) | 2022-04-22 |
Family
ID=69220531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911001932.7A Active CN110727504B (zh) | 2019-10-21 | 2019-10-21 | 代码执行方法、装置和渲染设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11294651B2 (zh) |
JP (1) | JP7048663B2 (zh) |
CN (1) | CN110727504B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111770170B (zh) | 2020-06-29 | 2023-04-07 | 北京百度网讯科技有限公司 | 请求处理方法、装置、设备和计算机存储介质 |
CN117762647A (zh) * | 2022-09-19 | 2024-03-26 | 华为终端有限公司 | 一种引擎间的通信方法及相关设备 |
CN116048735B (zh) * | 2023-03-23 | 2023-08-29 | 阿里云计算有限公司 | 信息处理方法以及对象共享方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108376066A (zh) * | 2016-11-24 | 2018-08-07 | 腾讯科技(深圳)有限公司 | 代码处理装置及代码处理方法 |
CN109697060A (zh) * | 2018-12-29 | 2019-04-30 | 广州华多网络科技有限公司 | 视频特效软件及其生成方法、装置、设备和存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6678744B2 (en) * | 1997-10-09 | 2004-01-13 | Ericsson Inc. | Application wrapper methods and systems |
US7281248B2 (en) * | 2002-11-19 | 2007-10-09 | Microsoft Corporation | Virtualized and realized user interface controls |
US8881099B2 (en) * | 2004-09-10 | 2014-11-04 | Oracle International Corporation | Dynamic generation of wrapper classes to implement call-by-value semantics |
US9256440B1 (en) * | 2009-03-30 | 2016-02-09 | Amazon Technologies, Inc. | Facilitating device driver interactions |
US8966477B2 (en) * | 2011-04-18 | 2015-02-24 | Intel Corporation | Combined virtual graphics device |
US20140282516A1 (en) * | 2013-03-15 | 2014-09-18 | International Business Machines Corporation | Providing execution access to files not installed in a virtualized space |
US9760964B2 (en) | 2013-04-11 | 2017-09-12 | Facebook, Inc. | Application-tailored object re-use and recycling |
US9501269B2 (en) * | 2014-09-30 | 2016-11-22 | Advanced Micro Devices, Inc. | Automatic source code generation for accelerated function calls |
US20160224325A1 (en) * | 2015-01-29 | 2016-08-04 | Mentor Graphics Corporation | Hiding compilation latency |
WO2018226621A1 (en) * | 2017-06-05 | 2018-12-13 | Umajin Inc. | Methods and systems for an application system |
US10795646B2 (en) * | 2017-07-07 | 2020-10-06 | Vmware, Inc. | Methods and systems that generate proxy objects that provide an interface to third-party executables |
-
2019
- 2019-10-21 CN CN201911001932.7A patent/CN110727504B/zh active Active
-
2020
- 2020-05-18 US US16/876,936 patent/US11294651B2/en active Active
- 2020-05-21 JP JP2020088761A patent/JP7048663B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108376066A (zh) * | 2016-11-24 | 2018-08-07 | 腾讯科技(深圳)有限公司 | 代码处理装置及代码处理方法 |
CN109697060A (zh) * | 2018-12-29 | 2019-04-30 | 广州华多网络科技有限公司 | 视频特效软件及其生成方法、装置、设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
File-based sharing for dynamically compiled code on Dalvik virtual machine;Yao-Chih Huang;《2010 International Computer Symposium (ICS2010)》;20110110;全文 * |
安卓平台安全性增强关键技术的研究;张源;《中国优秀博硕士学位论文全文数据库(博士)信息科技辑》;20160115;第2016年卷(第1期);I138-13 * |
Also Published As
Publication number | Publication date |
---|---|
US11294651B2 (en) | 2022-04-05 |
CN110727504A (zh) | 2020-01-24 |
JP2021068415A (ja) | 2021-04-30 |
JP7048663B2 (ja) | 2022-04-05 |
US20210117169A1 (en) | 2021-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110727504B (zh) | 代码执行方法、装置和渲染设备 | |
EP3816823A1 (en) | Webpage rendering method, device, electronic apparatus and storage medium | |
CN110704136B (zh) | 小程序组件的渲染方法、客户端、电子设备及存储介质 | |
CN111625738B (zh) | App目标页面的唤起方法、装置、设备和存储介质 | |
CN107092475B (zh) | 一种交互控件的调用方法及装置 | |
CN112988499A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN111767090A (zh) | 小程序的启动方法、装置、电子设备以及存储介质 | |
CN111158799A (zh) | 一种页面渲染方法、装置、电子设备及存储介质 | |
CN111694857B (zh) | 存储资源数据的方法、装置、电子设备及计算机可读介质 | |
CN108021583B (zh) | 页面加载方法及客户端 | |
CN110764779B (zh) | 封装方法、注册方法、装置和渲染设备 | |
CN111610972B (zh) | 页面生成方法、装置、设备及存储介质 | |
CN113050940A (zh) | 小程序的预览方法、相关装置及计算机程序产品 | |
CN106775862A (zh) | 应用加载方法及装置 | |
CN112947916B (zh) | 用于实现在线画布的方法、装置、设备以及存储介质 | |
CN114443076A (zh) | 镜像构建方法、装置、设备及存储介质 | |
CN110908675A (zh) | 运行环境获取方法、装置和电子设备 | |
CN111767059B (zh) | 深度学习模型的部署方法、装置、电子设备和存储介质 | |
CN113254043A (zh) | Web前端项目处理方法、装置、电子设备及存储介质 | |
CN112130888A (zh) | 应用程序更新的方法、装置、设备和计算机存储介质 | |
CN112764746A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN114661274A (zh) | 用于生成智能合约的方法和装置 | |
CN113254825A (zh) | 页面生成的方法、装置、电子设备和存储介质 | |
WO2022019784A1 (en) | Assigning computing resources to execution of evaluators for image animation | |
CN111913711A (zh) | 视频渲染方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210510 Address after: 100085 Baidu Building, 10 Shangdi Tenth Street, Haidian District, Beijing Applicant after: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd. Applicant after: Shanghai Xiaodu Technology Co.,Ltd. Address before: 100085 Baidu Building, 10 Shangdi Tenth Street, Haidian District, Beijing Applicant before: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |