call graph
Recently Published Documents


TOTAL DOCUMENTS

193
(FIVE YEARS 52)

H-INDEX

19
(FIVE YEARS 2)

2021 ◽  
Author(s):  
Chia-Yi Wu ◽  
Tao Ban ◽  
Shin-Ming Cheng ◽  
Bo Sun ◽  
Takeshi Takahashi

2021 ◽  
Vol 12 (8) ◽  
pp. 395-403
Author(s):  
A. Yu. Morozov ◽  

The paper presents a parallel algorithm for adaptive interpolation based on sparse grids for modeling dynamic systems with interval parameters. The idea of the algorithm is to construct a piecewise polynomial function that interpolates the dependence of the solution to the problem on the point values of the interval parameters. In the classical version of the algorithm, polynomial interpolation on complete grids is used, and with a large number of uncertainties, the algorithm becomes difficult to apply due to the exponential growth of computational costs. The use of sparse grids can significantly reduce the computational costs, but nevertheless the complexity of the algorithm in the general case remains exponential with respect to the number of interval parameters. In this regard, the issue of accelerating the algorithm is relevant. The algorithm can be divided into several sets of independent subtasks: updating the values corresponding to the grid nodes; calculation of weighting factors; interpolation of values at new nodes. The last two sets imply parallelization of recursion, so here the techniques for traversing the width of the call graph are mainly used. The parallel implementation of the algorithm was tested on two ODE systems containing two and six interval parameters, respectively, using a different number of computing cores. The results obtained demonstrate the effectiveness of the approaches used.


2021 ◽  
Vol 5 (OOPSLA) ◽  
pp. 1-27
Author(s):  
Satyajit Gokhale ◽  
Alexi Turcotte ◽  
Frank Tip

The JavaScript ecosystem provides equivalent synchronous and asynchronous Application Programming Interfaces (APIs) for many commonly used I/O operations. Synchronous APIs involve straightforward sequential control flow that makes them easy to use and understand, but their "blocking" behavior may result in poor responsiveness or performance. Asynchronous APIs impose a higher syntactic burden that relies on callbacks, promises, and higher-order functions. On the other hand, their nonblocking behavior enables applications to scale better and remain responsive while I/O requests are being processed. While it is generally understood that asynchronous APIs have better performance characteristics, many applications still rely on synchronous APIs. In this paper, we present a refactoring technique for assisting programmers with the migration from synchronous to asynchronous APIs. The technique relies on static analysis to determine where calls to synchronous API functions can be replaced with their asynchronous counterparts, relying on JavaScript's async/await feature to minimize disruption to the source code. Since the static analysis is potentially unsound, the proposed refactorings are presented as suggestions that must be reviewed and confirmed by the programmer. The technique was implemented in a tool named Desynchronizer. In an empirical evaluation on 12 subject applications containing 316 synchronous API calls, Desynchronizer identified 256 of these as candidates for refactoring. Of these candidates, 244 were transformed successfully, and only 12 resulted in behavioral changes. Further inspection of these cases revealed that the majority of these issues can be attributed to unsoundness in the call graph.


Electronics ◽  
2021 ◽  
Vol 10 (18) ◽  
pp. 2211
Author(s):  
Muhammad Umair Khan ◽  
Scott Uk-Jin Lee ◽  
Zhiqiang Wu ◽  
Shanza Abbas

With the proliferation of mobile devices, the popularity of Android applications (apps) has increased exponentially. Efficient power consumption in a device is essential from the perspective of the user because users want their devices to work all day. Developers must properly utilize the application programming interfaces (APIs) provided by Android software development kit to optimize the power consumption of their app. Occasionally, developers fail to relinquish the resources required by their app, resulting in a resource leak. Wake lock APIs are used in apps to manage the power state of the Android smartphone, and they frequently consume more power than necessary if not used appropriately (also called energy leak). In this study, we use a multi-layer perceptron (MLP) to detect wake lock leaks in Android apps because the MLP can solve complex problems and determine similarities in graphs. To detect wake lock leaks, we extract the call graph as features from the APK and embed the instruction and neighbor information in the node’s label of the call graph. Then, the encoded data are input to an MLP model for training and testing. We demonstrate that our model can identify wake lock leaks in apps with 99% accuracy.


Author(s):  
Sourabh S Badhya ◽  
◽  
Shobha G ◽  

As software systems evolve, there is a growing concern on how to manage and maintain a large codebase and fully understand all the modules present in it. Developers spend a significant amount of time analyzing dependencies before making any changes into codebases. Therefore, there is a growing need for applications which can easily make developers comprehend dependencies in large codebases. These applications must be able to analyze large codebases and must have the ability to identify all the dependencies, so that new developers can easily analyze the codebase and start making changes in short periods of time. Static analysis provides a means of analyzing dependencies in large codebases and is an important part of software development lifecycle. Static analysis has been proven to be extremely useful over the years in their ability to comprehend large codebases. Out of the many static analysis methods, this paper focuses on static function call graph (SFCG) which represents dependencies between functions in the form of a graph. This paper illustrates the feasibility of many tools which generate SFCG and locks in on Doxygen which is extremely reliant for large codebases. The paper also discusses the optimizations, issues and its corresponding solutions for Doxygen. Finally, this paper presents a way of representing SFCG which is easier to comprehend for developers.


2021 ◽  
Vol 30 (4) ◽  
pp. 1-46
Author(s):  
Jingbo Lu ◽  
Dongjie He ◽  
Jingling Xue

Object sensitivity is widely used as a context abstraction for computing the points-to information context-sensitively for object-oriented programming languages such as Java. Due to the combinatorial explosion of contexts in large object-oriented programs, k -object-sensitive pointer analysis (under k -limiting), denoted k -obj , is often inefficient even when it is scalable for small values of k , where k ⩽ 2 holds typically. A recent popular approach for accelerating k -obj trades precision for efficiency by instructing k -obj to analyze only some methods in a program context-sensitively, determined heuristically by a pre-analysis. In this article, we investigate how to develop a fundamentally different approach, Eagle , for designing a pre-analysis that can make k -obj run significantly faster while maintaining its precision. The novelty of Eagle is to enable k -obj to analyze a method with partial context sensitivity (i.e., context-sensitively for only some of its selected variables/allocation sites) by solving a context-free-language (CFL) reachability problem based on a new CFL-reachability formulation of k -obj . By regularizing one CFL for specifying field accesses and using another CFL for specifying method calls, we have formulated Eagle as a fully context-sensitive taint analysis (without k -limiting) that is both effective (by selecting the variables/allocation sites to be analyzed by k -obj context-insensitively so as to reduce the number of context-sensitive facts inferred by k -obj in the program) and efficient (by running linearly in terms of the number of pointer assignment edges in the program). As Eagle represents the first precision-preserving pre-analysis, our evaluation focuses on demonstrating its significant performance benefits in accelerating k -obj for a set of popular Java benchmarks and applications, with call graph construction, may-fail-casting, and polymorphic call detection as three important client analyses.


Author(s):  
Joanna C. S. Santos ◽  
Reese A. Jones ◽  
Chinomso Ashiogwu ◽  
Mehdi Mirakhorli
Keyword(s):  

2021 ◽  
Vol 176 ◽  
pp. 110945
Author(s):  
Rakan Alanazi ◽  
Gharib Gharibi ◽  
Yugyung Lee

Sign in / Sign up

Export Citation Format

Share Document