动态编程中的执行防护制造技术

技术编号:13880010 阅读:35 留言:0更新日期:2016-10-23 02:28
揭示了用于基于动态语言执行机器代码的方法。执行防护被创建为存储在数据结构中的值。该值代表机器代码的可重新使用部分的预期条件或条件集。代表所预期的条件的值与在机器代码的一部分的执行期间遇到的实际值进行比较。如果实际值对应于代表所预期的条件的值,则可重新使用的机器代码被执行。如果任何预期的条件改变,则执行防护被无效。

【技术实现步骤摘要】
【国外来华专利技术】背景动态语言已经在web编程中变得普遍。作为示例,JavaScript已经因其灵活性、易于原型制作、以及可移植性而变成了针对客户端侧应用的选择的语言。由于web应用变得更加复杂,计算正越来越多被委托到客户端侧以减少网络流量并改善用户体验。由于各种原因,诸如JavaScript可容易地分布,因此JavaScript也在服务器侧编程、游戏开发、以及桌面应用的创建中变得普遍。在JavaScript中,以及其它动态语言中,变量类型可在运行时被改变。因此,动态语言编译器或引擎通常不生成专用于一种类型的机器代码。相反,动态语言编译器通常发出被适配来与各种类型组合一起运行的类属代码、或字节码。相反,以更加传统的语言(诸如C或C++写的程序)包括类型信息,并且编译器可为指定类型提供通用机器代码。来自动态语言编译器的字节码通过解释器来执行,其可显著慢于指定类型的机器代码的执行。简单动态语言脚本的执行低效率对用户而言相对不易察觉。然而,在更加计算密集的应用中,这些执行低效率可能不利地影响用户体验。部分归因于动态语言在web编程中的普遍存在,动态编译器或引擎被开发以减少与通过解释器来执行类属代码相关联的低效率。一些优化引擎尝试标识类型稳定的字节码的序列,并将它们编译成类型特定的机器代码。这提供了字节码序列的高效执行同时条件如预期的那样保持。如果引擎遇到未预期的条件,帮助者例程可从类型特定的机器代码跳出并返回到使用针对该字节码的解释器。然而,当前用于确定条件是否预期的机制可能限制增加开销并减少执行效率。概述提供本概述以便以简化的形式介绍将在以下的详细描述中进一步描述的一些概念。本专
技术实现思路
并不旨在标识出所要求保护的主题的关键特征或必要特
征,也不旨在用于限定所要求保护的主题的范围。本公开涉及用于基于动态语言,诸如JavaScript,执行机器代码的方法。执行防护被创建为存储在数据结构中的值。该值代表机器代码的可重新使用部分的预期条件。代表所预期的条件的值与稍后在机器代码的一部分的执行期间遇到的实际值进行比较。如果实际值对应于代表所预期的条件的值,则可重新使用的机器代码被执行。如果实际值不对应于代表所预期的条件的值,则执行防护被无效。该方法可被实现为包括即时编译器的引擎的部分。在一个示例中,该方法在运行时环境(诸如web浏览器)中被实现。在很多情况中,单个执行防护可被用于同时地检查几个预期条件,诸如对象的类型以及对象的特性的属性。如果一个条件不如预期,则执行防护对它被设计来检查的全部条件而言无效。执行防护可在从原型加载特性时、在向对象添加特性或特性集时、在调用或者进入方法的内联代码时、以及在构建对象时等等被实现。附图简述包括附图来提供了对各实施例的进一步理解,且这些附图被合并在本专利技术书内并构成其一部分。附图示出各实施例,并且与说明书一起用于解释本专利技术的原理。其他实施例和各实施例的许多预期优点将随着参考下面的详细描述进行更好的理解而得到认识。附图的元素不一定相对于彼此而缩放。类似的附图标号指定对应的类似部分。图1是示出计算设备的示例的框图。图2是示出可被配置成在图1的计算设备上运行的示例动态语言引擎的框图。图3是示出执行从动态语言编译的机器代码的示例方法的框图。详细描述在以下具体实施例中,对附图进行了参考,附图构成了实施例的一部分且在其中作为示例示出了可在其中实践本专利技术的各特定实施例。可以理解,可以利用其他实施例,并且可以作出结构上或逻辑上的变化而不背离本专利技术的范
围。因此,以下详细描述并不旨在限制,并且本专利技术的范围由所附权利要求来限定。应理解,此处描述的各示例性实施例的特征可相互组合,除非另外具体注明。图1示出可以在操作环境中使用并且用于主存或运行计算机应用的示例性计算机系统,该计算机应用被包括在存储计算机可执行指令的一个或多个计算机可读存储介质上,该计算机可执行指令用于控制计算机系统(诸如计算设备)执行过程。示例性计算机系统包括计算设备,诸如计算设备100。在一基本硬件配置中,计算设备100通常包括具有一个或多个处理单元(即,处理器102)的处理器系统以及存储器104。作为示例,处理单元可包括但不限于一个芯片上的两个或更多个处理核或者两个或更多个处理器芯片。在一些示例中,计算设备还可具有一个或多个附加的处理或专用处理器(未示出)以执行从处理器102卸载的处理功能,附加的处理或专用处理器诸如用于图形处理器单元上的通用计算的图形处理器。存储器104可以布置在分层结构中并且可包括一级或多级高速缓存。取决于计算设备的配置和类型,存储器104可以是易失性的(如随机存取存储器(RAM))、非易失性的(诸如只读存储器(ROM)、闪存等)或两者的某种组合。计算设备100可以采用若干形式中的一种或多种。此类形式包括平板、个人计算机、工作站、服务器、手持式设备、消费者电子设备(诸如视频游戏控制台或数字录像机)、或其他,并且可以是独立设备或被配置为计算机网络、计算机群集、云服务基础结构或其他的一部分。计算设备100还可具有附加特征或功能。例如,计算设备100还可包括附加存储。此类存储可以是可移动和/或不可移动的,并且可包括但不限于,磁盘或光盘或固态存储器,或者闪速存储设备,诸如可移动存储108和不可移动存储110。计算机存储介质包括以存储诸如计算机可读的指令、数据结构、程序模块或其他数据之类的信息的任何合适的方法或技术实现的易失性和非易失性、可移动和不可移动介质。存储器104、可移动存储108和不可移动存储110全部都是计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、通用串行总
线(USB)闪存驱动器、闪存卡、或能用于存储所需信息且可以由计算设备100访问的任何其它存储介质。计算机存储介质不包括瞬态传播的信号。任何这样的计算机存储介质都可以是计算设备100的一部分。计算设备100常常包括一个或多个输入和/或输出连接,诸如USB连接、显示器端口、专用连接、以及用于连接到各种设备以向计算设备提供输入和输出的其他连接。输入设备112可包括诸如键盘、定点设备(例如鼠标)、笔、语音输入设备、触摸输入设备或其他等设备。输出设备111可包括诸如显示器、扬声器、打印机等设备。计算设备100常常包括允许计算设备100与其它计算机/应用115进行通信的一个或多个通信连接114。示例通信连接可包括但不限于,以太网接口、无线接口、总线接口、存储区域网络接口、专用接口。通信连接可以被用于将计算设备100耦合到计算机网络,所述计算机网络可以根据各种各样的特性(例如拓扑、连接方法和规模)被分类。网络是计算设备以及可能的由通信信道互连的其它设备的集合,所述通信信道促成通信且允许在互连的设备中共享资源和信息。计算机网络的示例包括局域网、广域网、因特网或其它网络。计算设备100可被配置成运行操作系统软件程序以及一个或多个计算机应用,这些构成系统平台。被配置成在计算设备100上执行的计算机应用包括至少一个进程(或任务),所述至少一个进程(或任务)是执行程序。每个进程提供用于执行该程序的资本文档来自技高网
...

【技术保护点】
一种用于基于动态语言执行机器代码的方法,包括:将防护创建为存储在数据结构中的值,且所述值代表所述机器代码的可重新使用部分的预期条件;将代表预期条件的值与稍后在所述机器代码的一部分的执行期间遇到的实际值进行比较;如果所述实际值与代表所述预期条件的值相对应,则执行所述机器代码;以及如果任何预期条件改变,则无效所述防护。

【技术特征摘要】
【国外来华专利技术】2013.12.20 US 14/137,3561.一种用于基于动态语言执行机器代码的方法,包括:将防护创建为存储在数据结构中的值,且所述值代表所述机器代码的可重新使用部分的预期条件;将代表预期条件的值与稍后在所述机器代码的一部分的执行期间遇到的实际值进行比较;如果所述实际值与代表所述预期条件的值相对应,则执行所述机器代码;以及如果任何预期条件改变,则无效所述防护。2.如权利要求1所述的方法,其特征在于,创建所述防护包括在存储器中分配要作为防护的对象。3.如权利要求2所述的方法,其特征在于,对象的预先确定的空隙被用作所述防护。4.如权利要求3所述的方法,其特征在于,保留对象内容在将代表所述预期条件的值与稍后在所述机器代码的一部分的执行期间遇到的实际值进行比较中不相关。5.如权利要求1所述的方法,其特征在于,将代表所述预期条件的值与稍后在所述机器代码的一部分的执行期间遇到的实际值进行比较允许多个预期的同时验证。6.如...

【专利技术属性】
技术研发人员:J·米亚多维茨C·CC·曼L·拉弗里尼尔
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国;US

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

1