一种嵌入式浏览器引擎动态编译执行方法技术

技术编号:7898065 阅读:212 留言:0更新日期:2012-10-23 04:18
该发明专利技术属于嵌入式浏览器的JavaScript引擎动态编译及执行方法,包括:组合式缓冲区的建立及其扩展,脚本热点及编译抽象语法树,扫描抽象语法树及字节码、目标码的编译,脚本执行及热点区域的确定、编译。该发明专利技术在嵌入式浏览器的JavaScript引擎中采用动态编译方式将扫描热点提前到将抽象语法树转换为字节码的过程中,并充分结合解释执行响应速度快和JIT执行效率高的优点,在解释执行过程中进一步探测循环结构以外的热点。因而具有可有效提高嵌入式浏览器JavaScript引擎动态编译与JavaScript脚本运行的同步性和效率,缩短了动态编译与执行之间的延迟时间、执行Javascript脚本快速,更新网页所显示的信息及时、并有效改善了用户的使用效果等特点。

【技术实现步骤摘要】

本专利技术属于嵌入式浏览器
,特别就一种嵌入式浏览器的JavaScript引擎动态编译及执行JavaScript脚本的处理方法,采用该方法可有效提高JavaScript引擎动态编译与JavaScript脚本执行的同步性和效率。
技术介绍
浏览器是一种基于超文本传输协议的客户端软件,它的主要功能是从网络服务器下载网页文档、图片、层叠样式表等网页元素,影响浏览器性能的因素有很多,脚本引擎的性能是决定浏览器性能的关键因素之一。浏览器的性能竞争在某种意义上说,就是脚本引擎的性能之争。脚本引擎主要需要处理的事务就是解析动态网页、处理相关的客户端Web应用程序。这些应用常用的脚本语言是JavaScript语言JavaScript语言因为其特有的 基于对象性、事件驱动性、安全性,得到广泛的应用。由于JavaScript语言本身是解释性语言,所以JavaScript引擎执行脚本的方式主要有解释执行方式、JIT (即时编译器)即时编译方式、动态编译方式。解释执行方式的优点是进行脚本执行的延迟短,缺点是执行反复执行的循环脚本时效率低(解释一句后、执行一句,因源程序中出现循环、解释程序也得重复地解释后并运行这一组语句,运行速度很慢),应对复杂的脚本操作时就显得力不从心JIT即时编译方式将整体的脚本编译成目标码再执行,相对解释执行方式其效率有极大的提高,但是JIT即时编译方式是对整体脚本进行编译后再执行,因而前后编译的间隔时间长、从而造成较长的延迟,为了降低这种延迟、提高运行效率,在编译产生目标码时不能进行充分的编译优化处理;动态编译方式是在JIT即时编译方式的基础上,研究影响脚本执行效率的关键区域,并只针对这些关键区域进行JIT即时编译(选择性即时编译),这种方式较合理地使用了 JIT (即时编译器),而且相对传统的JIT即时编译,其编译更灵活、延迟也较短,但该动态编译方式在执行之前需将JavaScript脚本全部翻译成中间码、然后在中间码执行之前和执行过程中进行关键区域探测,导致其关键区域探测时机不当,对关键区域的编译滞后性较长;同时,扫描和记录循环代码需耗费大量时间,进而影响JavaScript脚本的执行的即时性、效率和用户使用效果。
技术实现思路
本专利技术的目的是针对
技术介绍
存在的缺陷,提出;以进一步缩短动态编译与执行之间的延迟时间、有效提高嵌入式浏览器JavaScript引擎动态编译与JavaScript脚本运行的同步性和效率,达到快速执行Javascript脚本,更新网页Javascript脚本所显示的信息及时,以及有效改善用户的使用效果等目的。从而克服
技术介绍
嵌入式浏览器JavaScript引擎动态编译存在的当前网页页面JavaScript脚本执行的即时性和效率差,延迟性仍较长,用户使用效果差等缺陷。本专利技术的解决方案是在
技术介绍
嵌入式浏览器的JavaScript引擎中采用动态编译的基础上,将扫描(探测)热点的时机提前到引擎将抽象语法树转换为字节码的过程中,这样让引擎对热点的处理更早、更充分,也避免了热点的中间码的产生,而将热点直接编译成目标码、节约了引擎处理时间;并充分结合解释执行和JIT执行的优点,即通过将普通节点编译成字节码、热点(循环结构)编译成目标码,引擎则对前者使用解释执行、以提高脚本执行的响应速度,引擎对后者通过跳转标记找到对应的目标码、以有效提高热点执行的效率;同时在引擎的解释执行过程中进一步探测循环结构以外的热点区域,并将其编译成目标码,以提高热点区域的执行效率;此外,将
技术介绍
所采用的连续存储(整体)式大缓冲区,改为采用多个小缓冲区组合成逻辑大缓存区、以实现快速的跳转连接和目标码的存储,避免大量数据拷贝所带来的开销;本专利技术即以此实现其专利技术目的。因此,本专利技术方法包括A.组合式缓冲区的建立及其扩展采用小缓冲区的方式存储目标码和字节码,使用组合式缓冲区的管理机制通过跳转连接的方式将各小缓冲区组合形成一个具有逻辑关系的大缓冲区;在扩展缓冲区时只需在已有的小缓冲区基础上增加一个或多个相应的小缓 冲区即可;B.脚本热点及编译抽象语法树,扫描抽象语法树及字节码、目标码的编译B1.编译抽象语法树及热点的确定在引擎按
技术介绍
(
技术介绍
常规方法)将JavaScript脚本编译成抽象语法树后,将抽象语法树中的循环结构抽象语法子树作为热点,转步骤B2 ;B2.扫描抽象语法树在抽象语法树编译成字节码的过程中、即对抽象语法树的节点依次进行扫描,以确定其为普通节点还是热点,每当扫描完一个节点后即转步骤A3,直至扫描完毕;B3.字节码、目标码的编译对步骤B2扫描抽象语法树时确定的普通节点编译成字节码或字节码流、而扫描时确定的热点则直接编译成目标码,与此同时在字节码或字节码流与编译成的目标码间插入跳转标记,然后将其结果存放到缓冲区内;C.脚本执行及热点区域的确定、编译C1.脚本执行及热点区域的确定对步骤B编译成并存入步骤A中的字节码进行执行区域的初始化标记和执行,执行过程中判断字节码是否是跳转标记,如果不是跳转标记直接解释执行,如果是跳转标记则获取与该跳转标记对应的目标码后、执行,在解释执行过程中对每次执行的字节码段进行区域标记,将执行过程中被反复执行2次以上的区域作为热点区域、转步骤C2,其它的区域作为非热点区域;直至脚本执行完毕;C2.热点区域的编译首先判断组成热点区域的字节码是否含跳转标记,若步骤C1探测出的是由不含跳转标记的字节码组成的热点区域、则直接将字节码编译成目标码,若步骤C1探测出的是由含跳转标记的字节码形成的混合式热点区域、则将其联合编译成目标码;同时将探测出的各热点区域对应的字节码或含跳转标记的字节码修改为新的跳转标记,转步骤Cp在步骤A中所述小缓冲区包括目标码缓冲区和字节码缓冲区。而在步骤C2中所述对含跳转标记的字节码形成的混合区域、经联合编译成目标码,其联合编译的方法是在引擎将字节码编译成目标码的过程中,一旦发现跳转标记即将该跳转标记对应的目标码连接到当前目标码之后,再继续联合编译的过程。本专利技术由于在嵌入式浏览器的JavaScript引擎中采用了动态编译方式、将扫描(探测)热点的时机提前到引擎将抽象语法树转换为字节码的过程中,让引擎对热点的处理更早、更充分,也省略了热点的中间码的产生、将热点直接编译成目标码,节约了引擎处理时间;同时充分结合了解释执行响应速度快和JIT执行效率高的优点,并在引擎的解释执行过程中进一步探测循环结构以外的热点,既提高了脚本执行的响应速度、又有效提高了热点及热点区域的执行效率;本专利技术同时采用小缓冲区组合形成一个具有逻辑关系的大缓冲区、代替
技术介绍
所采用的连续存储(整体)式大缓冲区,既方便缓冲区的容量扩展、又避免了采用连续存储方式的大缓冲区所必须进行的大量数据拷贝带来的开销。因而,本专利技术具有可有效提高嵌入式浏览器JavaScript引擎动态编译与JavaScript脚本运行的同步性和效率,缩短了动态编译与执行之间的延迟时间、执行Javascript脚本快速,更新网页Javascript脚本所显示的信息及时、并有效改善了用户的使用效果等特点。附图说明图I为本专利技术具体实施方式流程示意图。具体实施方式 本实施方式以数字电视机顶盒处理脚本代码为例该例脚本代码包含了循环结构、脚本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:郭文生桑楠郭小福余启洋
申请(专利权)人:电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1