Skip Navigation



The Computer Journal Advance Access published online on April 23, 2009

The Computer Journal, doi:10.1093/comjnl/bxp031
This Article
Right arrow Full Text (PDF)
Right arrow Alert me when this article is cited
Right arrow Alert me if a correction is posted
Services
Right arrow Email this article to a friend
Right arrow Similar articles in this journal
Right arrow Alert me to new issues of the journal
Right arrow Add to My Personal Archive
Right arrow Download to citation manager
Right arrowRequest Permissions
Google Scholar
Right arrow Articles by Barbuti, R.
Right arrow Articles by Tesei, L.
Right arrow Search for Related Content
Social Bookmarking
 Add to CiteULike   Add to Connotea   Add to Del.icio.us  
What's this?

© The Author 2009. Published by Oxford University Press on behalf of The British Computer Society. All rights reserved. For Permissions, please email: journals.permissions@oxfordjournals.org

An Abstract Interpretation Approach for Enhancing the Java Bytecode Verifier

Roberto Barbuti1, Nicoletta De Francesco2 and Luca Tesei3,*

1 Dipartimento di Informatica, Università di Pisa, Largo B. Pontecorvo, 1, 56127 Pisa, Italy
2 Dipartimento di Ingegneria dell’Informazione, Università di Pisa, Via Diotisalvi, 2, 56126 Pisa, Italy
3 Dipartimento di Matematica e Informatica, Università di Camerino, Via Madonna delle carceri, 9, 62032 Camerino (MC), Italy

* Corresponding author: luca.tesei{at}unicam.it

Received 11 October 2007; revised 25 March 2009

The Java virtual machine embodies a verifier that performs a set of checks on Java bytecode programs before their execution. The verifier carries out an efficient data-flow analysis applied to a type-level abstract interpretation of the code. The implementations of the bytecode verifier presented a significant problem with programs compiled with the Sun Java compiler (until version 1.4.1): there were legal Java programs which were correctly compiled into a bytecode that was rejected by the verifier. The problem was fixed by removing, in version 1.4.2 and following, some interesting features in the compilation of the try-finally Java construct. Because removing such features has a cost in terms of memory space, in this paper we propose to enhance the bytecode verifier to accept such programs, maintaining the space efficiency of the previous versions of the compiler. We define an abstract interpretation framework in which we model the enhanced version of the verifier. The defined abstract interpretation framework can be considered a good basis for other static analyses of bytecode programs.

Key Words: Java bytecode • abstract interpretation • bytecode verifier


Handling editor: Erol Gelenbe


Add to CiteULike CiteULike   Add to Connotea Connotea   Add to Del.icio.us Del.icio.us    What's this?




Disclaimer: Please note that abstracts for content published before 1996 were created through digital scanning and may therefore not exactly replicate the text of the original print issues. All efforts have been made to ensure accuracy, but the Publisher will not be held responsible for any remaining inaccuracies. If you require any further clarification, please contact our Customer Services Department.