blob: 57e0a8f1391946d96a3d4321b8d5d2586fda6a3c [file] [log] [blame]
Jason van Zyl96ac0672001-10-29 19:59:54 +00001
2$Id$
3
4"TODO" list for JustIce, the Java Class File Verifier by Enver Haase.
5
6- JustIce uses object generalization during pass 3b, as supposed by
7Sun. However, there are better methods such as the idea proposed by
Enver Haasedf83ee92002-03-09 22:30:15 +00008Staerk et al.: using sets of object types. JustIce may reject code
9that is not rejected by traditional JVM-internal verifiers for this
10reason. The corresponding checks all have some "TODO" tag with an
Enver Haase86a23ee2002-11-19 12:24:11 +000011explanation; they're all in the 'InstConstraintVisitor.java' file.
12Users encountering problems should simply comment them out (or
13uncomment them) as they like. The default is some setting that works
14well when using
15$ java org.apache.bcel.verifier.TransitiveHull java.lang.String
16meaning there are no rejects caused by the above problem in a lot of
17usual classes.
Jason van Zyl96ac0672001-10-29 19:59:54 +000018
Enver Haasefcbca342002-03-02 19:55:59 +000019- There are a few bugs concerning access rights of referenced methods
Jason van Zyl96ac0672001-10-29 19:59:54 +000020and probably fields. The tests for access rights that Sun defines
21should happen in pass four (which JustIce performs during pass 3a) are
22unintentionally omitted. This also happened to Sun and IBM with some
23of their version 1.3 JVMs. Thanks Markus Dahm.
24
25- There are bugs because of an ambiguity in the Java Virtual Machine
26Specification, Second Edition. These have to do with inheritance: A
27method invocation like MyObject::equals(Object) is considered illegal,
28if MyObject has no overriding definition of equals(Object). Sun
29clarified this issue via electronic mail: the invocation is legal,
30because MyObject inherits the member function equals(Object) from
31Object::equals(Object). The search algorithms don't seem to be trivial
32because interfaces can not only specify methods, but also declare
33fields. Also, access modifiers have to be honoured (see above).
34
35- It is not verified if classes that propose they would implement an
36interface _really_ implement all the methods.
37
Enver Haase6923aa12003-01-28 18:03:18 +000038- It is not verified that interfaces are actually tagged 'abstract'.
39
Jason van Zyl96ac0672001-10-29 19:59:54 +000040- The InstructionContext.getSuccessors() method may return the same
41successor more than one time. For performance reasons the ControlFlow-
42Graph.InstructionContextImpl class should return an array where the
43successors are pairwise disjoint. It should also be cached so that we
44don't have to do this calculation every time.
45
46***End of File***