[kaffe] completed bytecode verifier!

Jim Pick jim at kaffe.org
Tue Aug 12 16:01:02 PDT 2003


This seems to be taking more than a few days to fix, so I added
-noverify so we can build the regression tests.  It's only temporary -
we'll remove it when the verifier is happier with kjc.

Cheers,

 - Jim 

On Thu, 07 Aug 2003 11:56:15 -0400 (EDT)
"Rob Gonzalez" <rgonzale at wso.williams.edu> wrote:

> Hi Tim,
> 
> I'm working on fixing the problem with KJC now.  The problem is that the
> core kaffe classes are failing verification...if you run KJC with
> -verifyremote and not with -verify it should work.
> 
> Rob
> 
> 
> On Thu, 7 Aug 2003, Timothy Stack wrote:
> 
> > > 
> > > Hi all,
> > > 
> > > I just committed the bytecode verifier.  It's a huge chunk of code and
> > > it's very likely that there are little bugs lurking around in it...I can't
> > > even count how many off-by-one errors I had during development.
> > 
> > make  check-TESTS
> > make[1]: Entering directory `/z/stack/tmp0/kbuild/test/regression'
> > PASS: HelloWorldApp.class.save
> > error compiling:
> > java.lang.NoClassDefFoundError: Lat/dms/kjc/KjcSignatureParser;
> >    <<No stacktrace available>>
> > FAIL: HelloWorldApp.java
> > error compiling:
> > java.lang.NoClassDefFoundError: Lat/dms/kjc/KjcSignatureParser;
> >    <<No stacktrace available>>
> > FAIL: TestIntLong.java
> > error compiling:
> > java.lang.NoClassDefFoundError: Lat/dms/kjc/KjcSignatureParser;
> >    <<No stacktrace available>>
> > 
> > > - The new instruction cannot be used to create an instance of an abstract
> > >   class.
> > > 
> > >   This should be checked, but it cannot be checked by the verifier because
> > >   the verifier cannot load classes unless they are necessary for type
> > >   checking.  Thus if the type of class created by the new instruction is
> > >   not loaded, there's no way to check if it's abstract.
> > > 
> > >   This should be checked in code-analyse.
> > 
> > This isn't done for the sake of binary compatibility.  For example, if a 
> > base class adds an abstract method, you don't want to screw up any 
> > subclasses in different packages if the method isn't going to be called.
> > Instead, you wait until it actually is called and throw an 
> > AbstractMethodError.
> > 
> > > Cheers,
> > > Rob
> > 
> > tim
> > 
> > _______________________________________________
> > kaffe mailing list
> > kaffe at kaffe.org
> > http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
> > 
> 
> 
> _______________________________________________
> kaffe mailing list
> kaffe at kaffe.org
> http://kaffe.org/cgi-bin/mailman/listinfo/kaffe




More information about the kaffe mailing list