Magic-sets for localised analysis of Java bytecode (Q656846): Difference between revisions

From MaRDI portal
Import240304020342 (talk | contribs)
Set profile property.
ReferenceBot (talk | contribs)
Changed an Item
 
(One intermediate revision by one other user not shown)
Property / OpenAlex ID
 
Property / OpenAlex ID: W2060204386 / rank
 
Normal rank
Property / cites work
 
Property / cites work: Q5452362 / rank
 
Normal rank
Property / cites work
 
Property / cites work: Two classes of Boolean functions for dependency analysis / rank
 
Normal rank
Property / cites work
 
Property / cites work: On the power of magic / rank
 
Normal rank
Property / cites work
 
Property / cites work: Q4779098 / rank
 
Normal rank
Property / cites work
 
Property / cites work: Graph-Based Algorithms for Boolean Function Manipulation / rank
 
Normal rank
Property / cites work
 
Property / cites work: Information flow for Algol-like languages / rank
 
Normal rank
Property / cites work
 
Property / cites work: Efficient goal directed bottom-up evaluation of logic programs / rank
 
Normal rank
Property / cites work
 
Property / cites work: Bottom-up abstract interpretation of logic programs / rank
 
Normal rank
Property / cites work
 
Property / cites work: Constructive versions of Tarski's fixed point theorems / rank
 
Normal rank
Property / cites work
 
Property / cites work: Abstract interpretation and application to logic programs / rank
 
Normal rank
Property / cites work
 
Property / cites work: Representing Control: a Study of the CPS Transformation / rank
 
Normal rank
Property / cites work
 
Property / cites work: Q2763667 / rank
 
Normal rank
Property / cites work
 
Property / cites work: Cibai: An Abstract Interpretation-Based Static Analyzer for Modular Analysis and Verification of Java Classes / rank
 
Normal rank
Property / cites work
 
Property / cites work: Class invariants as abstract interpretation of trace semantics / rank
 
Normal rank
Property / cites work
 
Property / cites work: Q4529777 / rank
 
Normal rank
Property / cites work
 
Property / cites work: Magic-sets for localised analysis of Java bytecode / rank
 
Normal rank
Property / cites work
 
Property / cites work: Verification, Model Checking, and Abstract Interpretation / rank
 
Normal rank
Property / cites work
 
Property / cites work: Static Analysis / rank
 
Normal rank
Property / cites work
 
Property / cites work: Q4778699 / rank
 
Normal rank
Property / cites work
 
Property / cites work: Scheme: A interpreter for extended lambda calculus / rank
 
Normal rank
Property / cites work
 
Property / cites work: A lattice-theoretical fixpoint theorem and its applications / rank
 
Normal rank
Property / cites work
 
Property / cites work: Q3141916 / rank
 
Normal rank

Latest revision as of 20:47, 4 July 2024

scientific article
Language Label Description Also known as
English
Magic-sets for localised analysis of Java bytecode
scientific article

    Statements

    Magic-sets for localised analysis of Java bytecode (English)
    0 references
    0 references
    0 references
    13 January 2012
    0 references
    This paper develops a program transformation technique that allows to nicely extend the scope of static analyses based on denotational semantics to the characterization of the internal behavior of Java bytecode. This overcomes the main limitation of such type of static analyses which traditionally enable only a functional modeling, i.e. input/output, of the code behavior. The proposed technique is based on a magic-set transformation, similar to those already employed for functional and logic languages, that adds new blocks of code to a program without altering its semantics (only the structure of the blocks of bytecode is transformed while the bytecode itself remains unchanged). The functional behaviors of such blocks capture the internal behavior of the program at the points where they are inserted. The correctness of the transformation is proven with respect to an operational semantics on the basis of which an equivalent denotational semantics for the transformed program is defined. The achieved semantics is then exploited for deriving five types of static analyses, i.e., pair-sharing, cyclicity, nullness, class initialization and size. The transformation and the derived analyses are implemented and experimented in the context of the JULIA denotational analyzer. Regarding the manuscript organization, it is almost self-contained. Section 2 and 3 present the proposed magic-set transformation. Section 4 describes in depth the operational semantics for the Java bytecode, on the basis of which the devised transformation is proven to be correct in Section 5. Section 6 details the denotational semantics and Section 7 proves its equivalence to the operational semantics of Section 4. Section 8 gives some details about a nullness abstraction for the denotational semantics. The reported material allows the reader to grasp how the denotational semantics is exploited in practice, even though I would have liked to see it applied on a small yet complete example. It is my opinion that this could have been done without impact on the length of the paper by sacrificing, for example, Section 6.1 which contains some Java-related technicalities. I also think that including a concrete example involving an abstract domain which does not satisfy the ascending chain condition and showing a suitable widening operator for it would have helped the understanding of such an issue. The results reported in Section 8 and the availability of a simple web interface to JULIA witness the validity of the approach and its efficiency. Overall, however, this is a well written, much worth reading paper. In particular, I appreciated its completeness and the gradual way with which such a complex subject is introduced, developed and discussed, making it quite accessible to non-specialist readers. The advantages derived from a denotational semantics for the Java bytecode, which enables one to conduct different types of static analyses, go beyond the bytecode obtained from compiling ``pure'' Java source code. In the last few years, other programming languages, whose source-code compilation targets Java bytecode, have been introduced, namely Clojure, Groovy and more recently Scala. The denotational semantics could be easily customized, with little or no effort, to cope also with these languages.
    0 references
    0 references
    0 references
    0 references
    0 references
    magic-sets
    0 references
    abstract interpretation
    0 references
    static analysis
    0 references
    denotational semantics Java byte-code
    0 references
    0 references
    0 references
    0 references
    0 references
    0 references