混合式动态码编译装置、方法及其服务系统的制作方法
【技术领域】
[0001]本发明提供一种动态码编译装置,且特别是一种混合式动态码编译装置、方法及其服务系统。
【背景技术】
[0002]目前网络与电子技术发展快速,以致于人们可以轻易地使用终端装置浏览网页,以获得需要的服务与信息。网页的内容可以通过文件标示语言(Text Markup Language)来编辑,且文件标示语言还可以是超文件标示语言(Hyper Text Markup Language, HTML),以呈现结构化的信息(例如,标题、段落和列表等)。
[0003]然而,文件标示语言一般适用于编辑静态或非互动的网页,而不易或无法编辑动态或互动的网页,因此,便有动态直译式程序语言被提出,例如JavaScript。JavaScript是一种动态型别、弱型别、基于原型的语言,且内建支持型别。JavaScript可以直接嵌入HTML页面,也可以写成单独的档案(其扩展名为“js”)以利于结构和行为的分离。JavaScript可以用来将动态文字嵌入于HTML页面、对浏览器事件作出响应、读写HTML网页中的元素、在数据被送出到服务器之前验证数据、检测访客的浏览器信息或控制小型文本文件(cookies)。
[0004]目前,Mozilla公司提出了一种JavaScript的最佳化方案,其通过定义好的“ASM.js”档案的内容来比对收到的JavaScript码,以将收到的JavaScript码通过底层虚拟机器(Low Level Virtual Machine,LLVM)进行转码为C/C++语言码,以利于终端装置(例如,1S、Windows或Android系统的电子装置)执行所述C/C++语言码,从而显示动态或互动的网页。然而,若收到的JavaScript码不存在于“ASM.js”档案中的码库(codebase),贝U所接收到的JavaScript码将无法被转码,因此,Mozilla公司的方案仍缺乏弹性。
[0005]除此之外,Google公司提供了一种JavaScript引擎,称为V8引擎。V8引擎可以在JavaScript执行之前,将JavaScript编译成机器码,而非位元组或是进行直译,以此提升效能,但仍不能避免加载的时间消耗。另外,JavaScript码本身无法控制内存的释放,而可能导致内存泄漏(memory leak)。因此,V8引擎被设计成具有垃圾回收(GarbageCollect1n, GC)处理的功能。
[0006]垃圾回收处理是一种自动的内存管理机制,当一个电脑上的动态内存上的变数、物件或字串等数据不再被需要时,就应该予以释放,以让出内存空间。垃圾回收处理策略可以分为全域停止型(Stop-the-World, STW)、同步型(concurrent)与增进型(incremental).全域停止型垃圾回收处理策略在系统认为需要进行垃圾回收处理时,将目前执行的程序停止,并进行垃圾回收处理。同步型垃圾回收处理策略在程序执行时同时进行垃圾回收处理,而没有停止程序的问题,但相对地,其仅能进行简单的垃圾回收处理,故整体效率不佳。增进型的垃圾回收处理策略采用了上述全域停止型与同步型的垃圾回收处理策略,并做出了取舍,其在平时类似同步型垃圾回收处理策略,仅简单的垃圾回收处理,但在系统认为需要时,停止程序执行,并以全域停止型垃圾回收处理策略进行全整的垃圾回收处理。
[0007]由上述可知,全域停止型与增进型的垃圾回收处理策略不受外部控制,而同步型的垃圾回收处理策略则导致整体效率不佳。目前V8引擎虽采用了增进型的垃圾回收处理策略降低停止程序执行的冲击,但其在执行全域停止型的垃圾回收时,仍不受外部控制,故仍会造成程序于不可预期的时点停止执行,并造成使用者经验不佳。
【发明内容】
[0008]本发明实施例提供一种混合式动态码编译装置,所述混合式动态码编译装置包括语法解析器(parser)、静态码(native code)产生器与动态码改写器(rewriter),其中所述语法解析器耦接所述静态码产生器与所述动态码改写器。语法解析器用以接收第一动态码,对所述第一动态码进行语法解析,以将所述第一动态码分为多个能编译的区块与多个不能编译的区块。静态码产生器将所述能编译的区块转码为静态码。动态码改写器用以对所述不能编译的区块进行改写,以产生第二动态码,其中第二动态码具有所述第一动态码与所述静态码之间进行沟通的多个功能传呼(funct1n call)。
[0009]本发明实施例另提供一种混合式动态码编译装置方法,所述混合式动态码编译装置方法具有以下步骤。步骤A:接收第一动态码,对所述第一动态码进行语法解析,以将所述第一动态码分为多个能编译的区块与多个不能编译的区块。步骤B:将所述能编译的区块转码为静态码。步骤C:对所述不能编译的区块进行改写,以产生第二动态码,其中第二动态码具有所述第一动态码与所述静态码之间进行沟通的多个功能传呼。
[0010]本发明实施例还提供一种服务系统,所述服务系统包括计算机装置、服务器与终端装置,其中所述服务器连接于所述计算机装置,且所述终端装置连接于所述服务器。其中所述计算机装置、所述服务器与所述终端装置的其中一者或其组合用以执行上述混合式动态码编译装置方法。
[0011]综合以上所述,本发明实施例所提供的混合式动态码编译装置、方法及其服务系统有效地提升终端装置处理动态码的效率。
[0012]为使能更进一步了解本发明的特征及技术内容,请参阅以下有关本发明的详细说明与附图,但是此等说明与所附图式仅是用来说明本发明,而非对本发明的权利要求范围作任何的限制。
【附图说明】
[0013]图1是本发明实施例的混合式动态码编译装置的方块图。
[0014]图2A是本发明实施例的服务系统的示意图。
[0015]图2B是本发明另一实施例的服务系统的示意图。
[0016]图2C是本发明另一实施例的服务系统的示意图。
[0017]图3是本发明实施例的混合式动态码编译方法的流程图。
[0018]图4是本发明实施例的混合式动态码编译方法中垃圾回收处理的流程图。
[0019]【符号说明】
[0020]1:混合式动态码编译装置
[0021]11:语法解析器
[0022]12:辅助分析器
[0023]13:优化器
[0024]14:静态码产生器
[0025]15:动态码改写器
[0026]2、2’、2”:服务系统
[0027]20:网页开发者
[0028]21、21’:计算机装置
[0029]22、22’:服务器
[0030]23:因特网
[0031]24a ?24e、24a’ ?24e’:终端装置
[0032]S31 ?S36、S41 ?S43:步骤流程
【具体实施方式】
[0033]本发明实施例提供一种混合式动态码编译装置及方法,所述动态码编译装置及方法可以通过硬件或软件的方式来实现。所述动态码编译装置及方法接收动态码,例如JavaScript码,并且使用语法解析动态码,以将动态码分为多个能编译的区块与多个不能编译的区块。接着,所述动态码编译装置及方法将多个能编译的区块转换为静态码,例如C/C++码或是JavaScript的静态客户端(native client)应用程序接口(Applicat1nProgramming Interface, API),并且将多个不能编译的区块进行改写,以产生改写后的动态码,其中改写后的动态码保留了原始动态码与静态码之间进行沟通的功能传呼。
[0034]接着,终端装置可以通过浏览器或其他的解码设备(例如1S、WindowS或Android系统的网页浏览器)直接解析