
$Id$

"TODO" list for JustIce, the Java Class File Verifier by Enver Haase.

- JustIce uses object generalization during pass 3b,  as  supposed  by
Sun.  However,  there  are better methods such as the idea proposed by
Staerk et al.: using sets of object types.  JustIce  may  reject  code
that is not rejected by traditional JVM-internal  verifiers  for  this
reason. The corresponding checks all have  some  "TODO"  tag  with  an
explanation; they're all in the 'InstConstraintVisitor.java' file.
Users  encountering  problems  should  simply  comment  them  out  (or
uncomment them) as they like. The default is some setting  that  works
well when using
$ java org.apache.bcel.verifier.TransitiveHull java.lang.String
meaning there are no rejects caused by the above problem in a  lot  of
usual classes.

- There are a few bugs concerning access rights of referenced  methods
and  probably  fields.  The  tests  for access rights that Sun defines
should happen in pass four (which JustIce performs during pass 3a) are
unintentionally  omitted.  This also happened to Sun and IBM with some
of their version 1.3 JVMs. Thanks Markus Dahm.

- There are bugs because of an ambiguity in the Java  Virtual  Machine
Specification,  Second  Edition.  These have to do with inheritance: A
method invocation like MyObject::equals(Object) is considered illegal,
if  MyObject  has  no  overriding  definition  of  equals(Object). Sun
clarified this issue via electronic mail:  the  invocation  is  legal,
because  MyObject  inherits  the  member  function equals(Object) from
Object::equals(Object). The search algorithms don't seem to be trivial
because  interfaces  can  not  only  specify methods, but also declare
fields. Also, access modifiers have to be honoured (see above).

- It is not verified if classes that propose they would  implement  an
interface _really_ implement all the methods.

- It is not verified that interfaces are actually  tagged  'abstract'.

- The InstructionContext.getSuccessors() method may return the same
successor more than one time. For performance reasons the ControlFlow-
Graph.InstructionContextImpl class should return an array where the
successors are pairwise disjoint. It should also be cached so that we
don't have to do this calculation every time.

***End of File***
