[发明专利]一种嵌入式浏览器引擎动态编译执行方法有效
申请号: | 201210191993.6 | 申请日: | 2012-06-12 |
公开(公告)号: | CN102736943A | 公开(公告)日: | 2012-10-17 |
发明(设计)人: | 郭文生;桑楠;郭小福;余启洋 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 电子科技大学专利中心 51203 | 代理人: | 詹福五 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 浏览器 引擎 动态 编译 执行 方法 | ||
技术领域
本发明属于嵌入式浏览器技术领域,特别就一种嵌入式浏览器的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;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210191993.6/2.html,转载请声明来源钻瓜专利网。