Inline caches and hidden classes are two essential components for closing the performance gap between static languages such as Java, Scheme, or ML and dynamic languages such as javascript or Python. They rely on the o...
详细信息
ISBN:
(纸本)9781450371209
Inline caches and hidden classes are two essential components for closing the performance gap between static languages such as Java, Scheme, or ML and dynamic languages such as javascript or Python. They rely on the observation that for a particular object access located at a particular point of the program, the shapes, usually referred to as the hidden classes, of accessed objects are likely to be the same. Taking benefit of that invariant, they replace the expensive lookup the semantics of these languages normally demand with one test, the inline cache, and a memory read indexed by an offset computed during the last cache miss. These optimizations are essential but they are not general enough to cope with javascript's proxies. In particular, when the property name is itself unknown statically, inline cache-based optimizations always take a slow path. In this paper, we show how to generalize inline caches to cope with an unknown property name. The paper first discusses the general principle of the extension and then presents the experimental results we collected using a modified version of the Hop javascript compiler, demonstrating how the optimization is crucial for improving the performance of proxy objects (as they naturally use dynamic property names extensively). The evaluation report shows that the modified Hop outperforms all other implementations of the language, including the most efficient commercial ones, by a factor ranging from 2x to 100x. Even better, our optimizations are applicable to existing compilers as they require only straightforward changes to runtime data structures;no complex analyses are required.
To characterize the building blocks of a legacy software system (e.g., structure, dependencies), programmers usually spend a long time navigating its source code. Yet, modern integrated development environments (IDEs)...
详细信息
ISBN:
(纸本)9781450379588
To characterize the building blocks of a legacy software system (e.g., structure, dependencies), programmers usually spend a long time navigating its source code. Yet, modern integrated development environments (IDEs) do not provide appropriate means to efficiently achieve complex software comprehension tasks. To deal with this unfulfilled need, we present Hunter, a tool for the visualization of javascript applications. Hunter visualizes source code through a set of coordinated views that include a node-link diagram that depicts the dependencies among the components of a system, and a treemap that helps programmers to orientate when navigating its structure. In this paper, we report on a controlled experiment that evaluates Hunter. We asked 16 participants to solve a set of software comprehension tasks, and assessed their effectiveness in terms of (i) user performance (i.e., completion time, accuracy, and attention), and (ii) user experience (i.e., emotions, usability). We found that when using Hunter programmers required significantly less time to complete various software comprehension tasks and achieved a significantly higher accuracy. We also found that the node-link diagram panel of Hunter gets most of the attention of programmers, whereas the source code panel does so in Visual Studio Code. Moreover, programmers considered that Hunter exhibits a good user experience.
We present VeRA, a system for verifying the range analysis pass in browser just-in-time (JIT) compilers. Browser developers write range analysis routines in a subset of C++, and verification developers write infrastru...
详细信息
ISBN:
(纸本)9781450376136
We present VeRA, a system for verifying the range analysis pass in browser just-in-time (JIT) compilers. Browser developers write range analysis routines in a subset of C++, and verification developers write infrastructure to verify custom analysis properties. Then, VeRA automatically verifies the range analysis routines, which browser developers can integrate directly into the JIT. We use VeRA to translate and verify Firefox range analysis routines, and it detects a new, confirmed bug that has existed in the browser for six years.
javascript is employed in vast scenarios like web applications, NodeJS, and hybrid-mobile applications. Moreover, javascript is a core component in the social network because of its outstanding cross-platform. However...
详细信息
javascript is employed in vast scenarios like web applications, NodeJS, and hybrid-mobile applications. Moreover, javascript is a core component in the social network because of its outstanding cross-platform. However, the flexibility of javascript made these applications more prone to attacks that induce malicious behaviors in the code. This paper proposes a hybrid optimization model, namely the Spider-based Bird swarm algorithm (S-BSA) algorithm for malicious javascript detection. The proposed S-BSA is designed by the integration of Spider Monkey Optimization (SMO) and Bird Swarm algorithm (BSA). The attributes like Boolean, execution time, function calls, break statements, and conditional statements are considered from the datasets. After the extraction of features, Box-Cox transformation is applied to normalize data. Moreover, a Deep belief network (DBN) is employed to classify normal and malicious javascript codes. The classification is progressed with DBN, wherein the training of DBN is performed with the proposed S-BSA. The proposed S-BSA algorithm outperformed other methods with maximal accuracy of 0.944, maximal TPR of 0.958, and minimal FPR of 0.081. (c) 2021 Elsevier Ltd. All rights reserved.
暂无评论