An Abstract Interpretation Approach for Enhancing the Java']Java Bytecode Verifier

被引:1
作者
Barbuti, Roberto [3 ]
De Francesco, Nicoletta [2 ]
Tesei, Luca [1 ]
机构
[1] Univ Camerino, Dipartimento Matemat & Informat, I-62032 Camerino, MC, Italy
[2] Univ Pisa, Dipartimento Ingn Informaz, I-56126 Pisa, Italy
[3] Univ Pisa, Dipartimento Informat, I-56127 Pisa, Italy
关键词
!text type='Java']Java[!/text] bytecode; abstract interpretation; bytecode verifier; VERIFICATION; SYSTEM; JVM;
D O I
10.1093/comjnl/bxp031
中图分类号
TP3 [计算技术、计算机技术];
学科分类号
0812 ;
摘要
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.
引用
收藏
页码:679 / 700
页数:22
相关论文
共 31 条
[1]  
Abramsky Samson., 1994, Domain theory
[2]  
[Anonymous], 2001, Java and the Java Virtual Machine: Definition, Verification, Validation
[3]  
BARBUTI R, 2004, ABSTRACT INTERPRETAT
[4]  
BARBUTI R, 2002, P 14 INT C SOFTW ENG, P377
[5]   Bytecode verification by model checking [J].
Basin, D ;
Friedrich, S ;
Gawkowski, M .
JOURNAL OF AUTOMATED REASONING, 2003, 30 (3-4) :399-444
[6]  
BERTOT Y, 2001, LECT NOTES COMPUTER, V2102, P377
[7]   Simple verification technique for complex Java']Java bytecode subroutines [J].
Coglio, A .
CONCURRENCY AND COMPUTATION-PRACTICE & EXPERIENCE, 2004, 16 (07) :647-670
[8]   Type safety in the JVM: some problems in Java']Java 2 SDK 1.2 and proposed solutions [J].
Coglio, A ;
Goldberg, A .
CONCURRENCY AND COMPUTATION-PRACTICE & EXPERIENCE, 2001, 13 (13) :1153-1171
[9]  
Cohen R.M., 1997, The defensive Java Virtual Machine specification
[10]   Abstract interpretation [J].
Cousot, P .
ACM COMPUTING SURVEYS, 1996, 28 (02) :324-328