回顾JavaScript的近因抽象:走向直观、组合、高效的堆抽象

Jihyeok Park, Xavier Rival, Sukyoung Ryu
{"title":"回顾JavaScript的近因抽象:走向直观、组合、高效的堆抽象","authors":"Jihyeok Park, Xavier Rival, Sukyoung Ryu","doi":"10.1145/3088515.3088516","DOIUrl":null,"url":null,"abstract":"JavaScript is one of the most widely used programming languages. To understand the behaviors of JavaScript programs and to detect possible errors in them, researchers have developed several static analyzers based on the abstract interpretation framework. However, JavaScript provides various language features that are difficult to analyze statically and precisely such as dynamic addition and removal of object properties, first-class property names, and higher-order functions. To alleviate the problem, JavaScript static analyzers often use recency abstraction, which refines address abstraction by distinguishing recent objects from summaries of old objects. We observed that while recency abstraction enables more precise analysis results by allowing strong updates on recent objects, it is not monotone in the sense that it does not preserve the precision relationship between the underlying address abstraction techniques: for an address abstraction A and a more precise abstraction B, recency abstraction on B may not be more precise than recency abstraction on A. Such an unintuitive semantics of recency abstraction makes its composition with various analysis sensitivity techniques also unintuitive. In this paper, we propose a new singleton abstraction technique, which distinguishes singleton objects to allow strong updates on them without changing a given address abstraction. We formally define recency and singleton abstractions, and explain the unintuitive behaviors of recency abstraction. Our preliminary experiments show promising results for singleton abstraction.","PeriodicalId":368102,"journal":{"name":"Proceedings of the 6th ACM SIGPLAN International Workshop on State Of the Art in Program Analysis","volume":"48 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2017-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"5","resultStr":"{\"title\":\"Revisiting recency abstraction for JavaScript: towards an intuitive, compositional, and efficient heap abstraction\",\"authors\":\"Jihyeok Park, Xavier Rival, Sukyoung Ryu\",\"doi\":\"10.1145/3088515.3088516\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"JavaScript is one of the most widely used programming languages. To understand the behaviors of JavaScript programs and to detect possible errors in them, researchers have developed several static analyzers based on the abstract interpretation framework. However, JavaScript provides various language features that are difficult to analyze statically and precisely such as dynamic addition and removal of object properties, first-class property names, and higher-order functions. To alleviate the problem, JavaScript static analyzers often use recency abstraction, which refines address abstraction by distinguishing recent objects from summaries of old objects. We observed that while recency abstraction enables more precise analysis results by allowing strong updates on recent objects, it is not monotone in the sense that it does not preserve the precision relationship between the underlying address abstraction techniques: for an address abstraction A and a more precise abstraction B, recency abstraction on B may not be more precise than recency abstraction on A. Such an unintuitive semantics of recency abstraction makes its composition with various analysis sensitivity techniques also unintuitive. In this paper, we propose a new singleton abstraction technique, which distinguishes singleton objects to allow strong updates on them without changing a given address abstraction. We formally define recency and singleton abstractions, and explain the unintuitive behaviors of recency abstraction. Our preliminary experiments show promising results for singleton abstraction.\",\"PeriodicalId\":368102,\"journal\":{\"name\":\"Proceedings of the 6th ACM SIGPLAN International Workshop on State Of the Art in Program Analysis\",\"volume\":\"48 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2017-06-18\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"5\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Proceedings of the 6th ACM SIGPLAN International Workshop on State Of the Art in Program Analysis\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/3088515.3088516\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the 6th ACM SIGPLAN International Workshop on State Of the Art in Program Analysis","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/3088515.3088516","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 5

摘要

JavaScript是使用最广泛的编程语言之一。为了理解JavaScript程序的行为并检测其中可能存在的错误,研究人员开发了几个基于抽象解释框架的静态分析器。然而,JavaScript提供了各种难以静态和精确分析的语言特性,例如对象属性的动态添加和删除、一等属性名称和高阶函数。为了缓解这个问题,JavaScript静态分析器经常使用最近抽象,它通过区分最近的对象和旧对象的摘要来改进地址抽象。我们观察到,虽然最近抽象通过允许对最近对象进行强更新来实现更精确的分析结果,但它并不是单调的,因为它没有保留底层地址抽象技术之间的精确关系:对于地址抽象A和更精确的抽象B, B上的近因抽象可能并不比A上的近因抽象更精确。这种近因抽象的不直观语义使得它与各种分析灵敏度技术的组合也不直观。在本文中,我们提出了一种新的单例抽象技术,该技术可以区分单例对象,以便在不改变给定地址抽象的情况下对其进行强更新。我们正式定义了近因抽象和单例抽象,并解释了近因抽象的非直观行为。我们的初步实验显示了单例抽象的良好结果。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
Revisiting recency abstraction for JavaScript: towards an intuitive, compositional, and efficient heap abstraction
JavaScript is one of the most widely used programming languages. To understand the behaviors of JavaScript programs and to detect possible errors in them, researchers have developed several static analyzers based on the abstract interpretation framework. However, JavaScript provides various language features that are difficult to analyze statically and precisely such as dynamic addition and removal of object properties, first-class property names, and higher-order functions. To alleviate the problem, JavaScript static analyzers often use recency abstraction, which refines address abstraction by distinguishing recent objects from summaries of old objects. We observed that while recency abstraction enables more precise analysis results by allowing strong updates on recent objects, it is not monotone in the sense that it does not preserve the precision relationship between the underlying address abstraction techniques: for an address abstraction A and a more precise abstraction B, recency abstraction on B may not be more precise than recency abstraction on A. Such an unintuitive semantics of recency abstraction makes its composition with various analysis sensitivity techniques also unintuitive. In this paper, we propose a new singleton abstraction technique, which distinguishes singleton objects to allow strong updates on them without changing a given address abstraction. We formally define recency and singleton abstractions, and explain the unintuitive behaviors of recency abstraction. Our preliminary experiments show promising results for singleton abstraction.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信