[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Compiling with jikes > 1.13
From: |
Mark Wielaard |
Subject: |
Re: Compiling with jikes > 1.13 |
Date: |
06 Feb 2002 18:34:50 +0100 |
Hi,
On Wed, 2002-02-06 at 15:40, Mark Wielaard wrote:
>
> I am going to play a bit more with this to see if I can see were some of
> the other errors come from to better understand what libgcj is doing and
> wether I am not feeding you completely bogus data.
I changed the program a little bit to force loading all classes through
the same ClassLoader when possible. Now it actually seems to work. But a
lot of the VerifyErrors seem to be wrong.
For example the verifier doesn't like something like the following:
Method name:"compareTo" public Signature: 108=(java.lang.Object)int
Attribute "Code", length:56, max_stack:2, max_locals:2, code_length:24
0: aload_1
1: instanceof #1=<Class java.math.BigInteger>
4: ifeq 16
7: aload_0
8: aload_1
9: checkcast #1=<Class java.math.BigInteger>
12: invokestatic #110=<Method java.math.BigInteger.compareTo
(java.math.BigInteger,java.math.BigInteger)int>
15: ireturn
16: new #111=<Class java.lang.ClassCastException>
19: dup
20: invokespecial #113=<Method java.lang.ClassCastException.<init>
()void>
23: athrow
$ ./verifyclass java/math/BigInteger.class
Verifying: java/math/BigInteger.class
java.lang.VerifyError: verification failed at PC 23 in
java.math.BigInteger:compareTo((Ljava.lang.Object;)I): incompatible type
on stack
But the bytecode looks good to me.
I attach the VerifyClass code so people can play with it.
I also tried compiling jikes from CVS but I am unable to compile
Classpath with it. Simple test programs work though. Needs some
debugging. Eric, is jikes from CVS 'stable'?
Cheers,
Mark
import java.io.*;
public class VerifyClass extends ClassLoader
{
public static void main(String args[])
{
if (args.length == 1)
{
System.out.println("Verifying: " + args[0]);
try
{
VerifyClass verifier = new VerifyClass();
Class c = verifier.load(args[0]);
verifier.resolveClass(c);
}
catch (Throwable t)
{
System.err.println(t);
}
}
else
System.out.println("argument must be a class file");
}
Class load(String classFile) throws IOException
{
InputStream is = new FileInputStream(classFile);
ByteArrayOutputStream os = new ByteArrayOutputStream();
byte[] buf = new byte[2048];
int read = is.read(buf);
while(read > 0)
{
os.write(buf, 0, read);
read = is.read(buf);
}
byte[] data = os.toByteArray();
return defineClass(data, 0, data.length);
}
protected Class loadClass(String name, boolean link)
throws java.lang.ClassNotFoundException
{
if (!"java.lang.Object".equals(name))
{
try
{
Class c = load(name.replace('.','/') + ".class");
if (link)
resolveClass(c);
return c;
}
catch(IOException ioe) { }
}
return super.loadClass(name, link);
}
}
- Re: Compiling with jikes > 1.13, (continued)
- Re: Compiling with jikes > 1.13, Chris Gray, 2002/02/04
- Re: Compiling with jikes > 1.13, John Leuner, 2002/02/04
- Re: Compiling with jikes > 1.13, Stuart Ballard, 2002/02/04
- Re: Compiling with jikes > 1.13, Etienne M. Gagnon, 2002/02/04
- Re: Compiling with jikes > 1.13, Mark Wielaard, 2002/02/04
- Re: Compiling with jikes > 1.13, Eric Blake, 2002/02/04
- Re: Compiling with jikes > 1.13, Mark Wielaard, 2002/02/05
- Re: Compiling with jikes > 1.13, Tom Tromey, 2002/02/05
- Re: Compiling with jikes > 1.13, Mark Wielaard, 2002/02/06
- Re: Compiling with jikes > 1.13, Mark Wielaard, 2002/02/06
- Re: Compiling with jikes > 1.13,
Mark Wielaard <=
- Re: Compiling with jikes > 1.13, Tom Tromey, 2002/02/06
- Re: Compiling with jikes > 1.13, Mark Wielaard, 2002/02/06
- Re: Compiling with jikes > 1.13, Mark Wielaard, 2002/02/06
- Re: Compiling with jikes > 1.13, Tom Tromey, 2002/02/06
- Re: Compiling with jikes > 1.13, Mark Wielaard, 2002/02/06
- Re: Compiling with jikes > 1.13, Tom Tromey, 2002/02/06
- Re: Compiling with jikes > 1.13, Mark Wielaard, 2002/02/06
- Re: Compiling with jikes > 1.13, Mark Wielaard, 2002/02/06
- Re: Compiling with jikes > 1.13, Tom Tromey, 2002/02/06
- Re: Compiling with jikes > 1.13, Eric Blake, 2002/02/06