Re: Compiling with jikes > 1.13

2002-02-08 Thread Eric Blake

Eric Blake wrote:
> 
> Mark Wielaard wrote:
> >
> > And this time it actually had a valid VerifyError!
> > This new jikes is a bit to clever about String concatenations.
> 
> I'll fix that today, and repost here when it is up.

I committed that patch to Jikes' CVS earlier today, fixing the
VerifyErrors with string concatenation.  I'm trying to get one more
patch through the test suite and in CVS by tomorrow morning, then I'll
take a look at the other verify errors you reported.  My gut feeling is
that we may have to make some private constructors in inner classes more
accessible as a temporary workaround, until jikes 1.16 is released.
-- 
This signature intentionally left boring.

Eric Blake [EMAIL PROTECTED]
  BYU student, free software programmer

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



AWT components ?

2002-02-08 Thread Yann Secq

Hi, I've foud a project called KJC, which is a set of AWT components
that were designed to bring Swing-like abilities to applets.
It doesn't seems to be maintained any more, but the license is
"open" and perhaps the author could give it to the FSF ?

I haven't looked at the source but we could perhaps find
some usefull stuff ?
Here is the link :  http://openlab.ring.gr.jp/kyasu/

Cheers, yann.

-- 
  / Yann SECQEquipe SMAC   [EMAIL PROTECTED] \
| Multi-Agent Systems Modeling & Agent Oriented Programming |
  \ http://www.lifl.fr/SMAChttp://www.lifl.fr/~secq /


___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Re: Compiling with jikes > 1.13

2002-02-08 Thread Brian Jones

Eric Blake <[EMAIL PROTECTED]> writes:

> Eric Blake wrote:
> > 
> > Mark Wielaard wrote:
> > >
> > > And this time it actually had a valid VerifyError!
> > > This new jikes is a bit to clever about String concatenations.
> > 
> > I'll fix that today, and repost here when it is up.
> 
> I committed that patch to Jikes' CVS earlier today, fixing the
> VerifyErrors with string concatenation.  I'm trying to get one more
> patch through the test suite and in CVS by tomorrow morning, then I'll
> take a look at the other verify errors you reported.  My gut feeling is
> that we may have to make some private constructors in inner classes more
> accessible as a temporary workaround, until jikes 1.16 is released.

Let me know what I should pull from jikes cvs to compile with for the
official release.

Brian
-- 
Brian Jones <[EMAIL PROTECTED]>

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Re: make dist fixes

2002-02-08 Thread Mark Wielaard

Hi Brian,

On Fri, 2002-02-08 at 06:00, Brian Jones wrote:
> For me, make distcheck fails for unknown reasons at this time

distcheck fails for me with a 'Error: files left after uninstall'
since all files (classes) that where unpacked from the zip file are
still in the install directory after an uninstall. That is annoying but
not very bad.

> I've placed a pre-release file at
> ftp://alpha.gnu.org/gnu/classpath/classpath-0.03-pre1.tar.gz

Tried it on my main development machine and compiling went all OK.
But when trying out orp I got

$ mains/orp/Linux/dbg/orp -swapjit 0 1 -classpath $CLASSPATH Hello

Linking error:  (6) while resolving method at constant pool index 33
in class gnu/java/io/encode/Encoder8859_1

Linking error:  (6) while resolving method at constant pool index 33
in class gnu/java/io/encode/Encoder8859_1

Fatal error: can't compile gnu/java/io/encode/Encoder8859_1.()V

I am going to check what went wrong.

When I tried the build on a machine without jikes and zip installed
something went wrong. The build automatically used gcj to compile the
classes (good). But since $(ZIP) was not defined it then gave the
following error:

r -D glibj.zip gnu java javax > /dev/null
/bin/sh: r: command not found
make[1]: [glibj.zip] Error 127 (ignored)

configure should complain about the absence of zip.

> In the time I have, I could not make it possible
> to include generated JNI header files, so a user would need gcjh if
> configuring with --enable-jni

I don't think that is a very big problem. Most people that are trying
Classpath now probably have gcc installed.

Cheers,

Mark

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Re: make dist fixes

2002-02-08 Thread Mark Wielaard

Hi,

On Fri, 2002-02-08 at 15:42, Mark Wielaard wrote:
> $ mains/orp/Linux/dbg/orp -swapjit 0 1 -classpath $CLASSPATH Hello
> 
> Linking error:  (6) while resolving method at constant pool index 33
> in class gnu/java/io/encode/Encoder8859_1
> 
> Linking error:  (6) while resolving method at constant pool index 33
> in class gnu/java/io/encode/Encoder8859_1
> 
> Fatal error: can't compile gnu/java/io/encode/Encoder8859_1.()V
> 
> I am going to check what went wrong.

OK. Ignore me. I still had the jikes with the StringBuffer.append bug in
my path. Reconfigure with jikes 1.15 and everything works.

I will try the new jikes from CVS now.

Cheers,

Mark

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Re: make dist fixes

2002-02-08 Thread Mark Wielaard

Hi,

On Fri, 2002-02-08 at 16:20, Mark Wielaard wrote:
> 
> OK. Ignore me. I still had the jikes with the StringBuffer.append bug in
> my path. Reconfigure with jikes 1.15 and everything works.
> 
> I will try the new jikes from CVS now.

Same problem :(
I have not yet figured out if it is a jikes compiler problem or a ORP
jit problem.

The StingBuffer.append() bug is gone though.

Cheers,

Mark

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Trouble with gcj 3.0.4 (BasicPermission.java)

2002-02-08 Thread Mark Wielaard

Hi,

When testing the pre-release tarbal with gcj 3.0.4 20020202 (Debian
prerelease) I got the following:

/usr/bin/gcj -C -d . @classes
./../java/security/BasicPermission.java:64: Class
`java.security.BasicPermission' can't subclass interface
`java.security.acl.Permission'.
   public abstract class BasicPermission extends Permission implements
 ^
The released version of gcj (3.0.3) does not have this strange bug.
Changing Permission to java.security.Permission solves it.

Strangely enough I only have this with the release tarbal not with the
cvs tree. Hmmm.

Cheers,

Mark

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Re: make dist fixes

2002-02-08 Thread Mark Wielaard

Hi,

On Fri, 2002-02-08 at 16:43, Mark Wielaard wrote:
> > I will try the new jikes from CVS now.
> 
> Same problem :(
> I have not yet figured out if it is a jikes compiler problem or a ORP
> jit problem.

The problem seems to come from the fact that jikes 1.15 (and gcj)
generate things like:
1804: invokestatic #34=

But jikes 1.15a (from CVS) generates:
1804: invokestatic #33=

Since loadTable() is a static method in (the superclass)
EncoderEightBitLookup not in (the subclass) Encoder8859_1 it seems that
jikes 1.15a generates wrong code in this case.

Cheers,

Mark

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Re: Trouble with gcj 3.0.4 (BasicPermission.java)

2002-02-08 Thread Tom Tromey

> "Mark" == Mark Wielaard <[EMAIL PROTECTED]> writes:

Mark> /usr/bin/gcj -C -d . @classes
Mark> ./../java/security/BasicPermission.java:64: Class
Mark> `java.security.BasicPermission' can't subclass interface
Mark> `java.security.acl.Permission'.
Mark>public abstract class BasicPermission extends Permission implements
Mark>  ^
Mark> The released version of gcj (3.0.3) does not have this strange bug.
Mark> Changing Permission to java.security.Permission solves it.

You'll have to work around it.  3.0.4 is perhaps the last of the 3.0
releases (hard to be certain).  3.1 is due in April.  The gcj hackers
aren't really fixing bugs in 3.0 at all any more; I have that tree
checked out for reference but I haven't built it in many months.

For problems like this, where the fix is something we wouldn't write
from scratch and is just a workaround for a current compiler problem,
I would prefer that we only have the fix in this particular Classpath
release.  So the idea would be that we make a release branch and then
add the workarounds there.  My idea here is that in the long term we'd
prefer the existing code, as it is "more natural", and perhaps by the
time the next Classpath release comes around we won't have to worry
about this particular compiler any more.  What do you think?

Tom

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Re: make dist fixes

2002-02-08 Thread Eric Blake

Actually, the bug was in jikes 1.15, and is still in the jit.  JLS 13
requires that compilers emit method references relative to the class
that qualifies the method invocation, even if that class only inherits
the method.  It is then up to the VM to correctly track inheritance
issues when resolving method calls.  Sun's javac 1.3 also had this bug,
JDK 1.4 compiles the way jikes 1.15a does (ie. Encoder8859_1.loadTable).

It makes a difference in this example:

in A.java:
class A
{
  static void m() { System.out.print("a"); }
}

in B.java:
class B extends A {}

in C.java:
class C
{
  public static void main(String[] args)
  {
B.m();
  }
}

Now, recompile B.java:
class B extends A
{
  static void m() { System.out.print("b"); }
}

The result of executing the (unchanged) C.class should now be "b", not
"a".

This is also the reason that Sun's javap program will often list null as
the method or field name for classes compiled with javac 1.4, because
they have not yet fixed javap to take inheritance into account.

Mark Wielaard wrote:
> 
> 
> The problem seems to come from the fact that jikes 1.15 (and gcj)
> generate things like:
> 1804: invokestatic #34= gnu.java.io.encode.EncoderEightBitLookup.loadTable ()void>
> 
> But jikes 1.15a (from CVS) generates:
> 1804: invokestatic #33= gnu.java.io.encode.Encoder8859_1.loadTable ()void>
> 
> Since loadTable() is a static method in (the superclass)
> EncoderEightBitLookup not in (the subclass) Encoder8859_1 it seems that
> jikes 1.15a generates wrong code in this case.
> 
> Cheers,
> 
> Mark

-- 
This signature intentionally left boring.

Eric Blake [EMAIL PROTECTED]
  BYU student, free software programmer


___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Re: Trouble with gcj 3.0.4 (BasicPermission.java)

2002-02-08 Thread Mark Wielaard

Hi,

On Fri, 2002-02-08 at 20:11, Tom Tromey wrote:
> 
> For problems like this, where the fix is something we wouldn't write
> from scratch and is just a workaround for a current compiler problem,
> I would prefer that we only have the fix in this particular Classpath
> release.  So the idea would be that we make a release branch and then
> add the workarounds there.  My idea here is that in the long term we'd
> prefer the existing code, as it is "more natural", and perhaps by the
> time the next Classpath release comes around we won't have to worry
> about this particular compiler any more.  What do you think?

I think a branch is a little over the top for this release. We have some
other workarounds in the current tree for compiler problems. e.g.

java/lang/reflect/Proxy.java: // FIXME workaround for bug in gcj 3.0.x
java/util/TreeMap.java: // FIXME gcj cannot handle this. Bug java/4695

And I think some compilers versions might be much longer around then we
hope (just look at all the different versions of jikes that people are
still using). So I will just commit the workaround with the words FIXME,
gcj, workaround and/or bug. The workaround is to simply use the fully
qualified classname in this case and that doesn't matter for other
compiler (versions).

Cheers,

Mark

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Re: make dist fixes

2002-02-08 Thread Mark Wielaard

Hi Eric,

On Fri, 2002-02-08 at 20:14, Eric Blake wrote:
> Actually, the bug was in jikes 1.15, and is still in the jit.  JLS 13
> requires that compilers emit method references relative to the class
> that qualifies the method invocation, even if that class only inherits
> the method.  It is then up to the VM to correctly track inheritance
> issues when resolving method calls.  Sun's javac 1.3 also had this bug,
> JDK 1.4 compiles the way jikes 1.15a does (ie. Encoder8859_1.loadTable).

That (and the example) seems to make sense. But it also means that we
don't have one bug in jikes, but two bugs, one in ORP and one in gcj
byte code generation. Sigh.

That basicly means we don't recommend jikes 1.15a for this Classpath
release and ORP 1.0.9, or we wait for a new ORP release with a fix.
H. I would opt for releasing now and adding a note about this
problem (with newer versions of jikes and ORP) to the README/INSTALL
file. Or we could try to produce a patch for ORP, but I am not sure that
is very easy.

Cheers,

Mark

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Re: make dist fixes

2002-02-08 Thread Eric Blake

Keep in mind that a workaround for this is to explicitly qualify the
method with the desired class (ie. the one where the method is actually
defined).

In other words, instead of
  Encoder8859_1.loadTable()
in the source code, use
  EncoderEightBitLookup.loadTable()

The only problem I see with this approach is if EncoderEightBitLookup is
not accessible when Encoder8859_1 is.  Then an alternative workaround
would be to modify Encoder8859_1 by adding this method:
  public static void loadTable() { super.loadTable(); }

I'm not familiar with the ORP code, but these workarounds shouldn't be
too hard.

Do you want me to file a PR for the gcc bug?  I've yet to get a working
compile of gcj on my cygwin box, so I'm not sure how well I would do on
bug reporting.

Mark Wielaard wrote:
> 
> That (and the example) seems to make sense. But it also means that we
> don't have one bug in jikes, but two bugs, one in ORP and one in gcj
> byte code generation. Sigh.
> 
> That basicly means we don't recommend jikes 1.15a for this Classpath
> release and ORP 1.0.9, or we wait for a new ORP release with a fix.
> H. I would opt for releasing now and adding a note about this
> problem (with newer versions of jikes and ORP) to the README/INSTALL
> file. Or we could try to produce a patch for ORP, but I am not sure that
> is very easy.
> 
> Cheers,
> 
> Mark

-- 
This signature intentionally left boring.

Eric Blake [EMAIL PROTECTED]
  BYU student, free software programmer

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Re: make dist fixes

2002-02-08 Thread Mark Wielaard

Hi,

On Sat, 2002-02-09 at 02:16, Eric Blake wrote:
> Keep in mind that a workaround for this is to explicitly qualify the
> method with the desired class (ie. the one where the method is actually
> defined).
> 
> In other words, instead of
>   Encoder8859_1.loadTable()
> in the source code, use
>   EncoderEightBitLookup.loadTable()

O boy, a workaround that can be put in the Classpath code.
And it works! (for HelloWorld, I still haven't setup Mauve for more
extensive testing). Great! I can checkin that workaround for the
encode/decode code.

What are your thoughts on jikes 1.15a (CVS) is it better then jikes
1.15? Do you want to make a (semi) release of that code?

> I'm not familiar with the ORP code, but these workarounds shouldn't be
> too hard.

I did look briefly at the ORP code and it isn't that dificult. The code
can be found in common/class_loader/Resolve.cpp and Class.cpp. I think I
understand what goes wrong (the method gets looked up by going up in the
class hierarchy, but then the constant pool of the original referenced
class seems to be used) but I haven't actually tried to change/fix the
code.

> Do you want me to file a PR for the gcc bug?  I've yet to get a working
> compile of gcj on my cygwin box, so I'm not sure how well I would do on
> bug reporting.

I think your explanation plus example is good enough to put in the bug
database (maybe with a reference to the email that showed the bytecode).
That way the issue will not be forgotten.

I am afraid that gcj does not yet compile on cygwin, although there is
currently a lot of work done to get it to compile on Windows (if mingw
is the same kind of thing as cygwin).

Cheers,

Mark

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Re: make dist fixes

2002-02-08 Thread Tom Tromey

> "Mark" == Mark Wielaard <[EMAIL PROTECTED]> writes:

Mark> That (and the example) seems to make sense. But it also means
Mark> that we don't have one bug in jikes, but two bugs, one in ORP
Mark> and one in gcj byte code generation. Sigh.

If you have the time, would you mind constructing a test case so we
can see if gij also has the runtime bug?  I'd appreciate that.

Tom

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Re: make dist fixes

2002-02-08 Thread Tom Tromey

> "Mark" == Mark Wielaard <[EMAIL PROTECTED]> writes:

Mark> I think your explanation plus example is good enough to put in
Mark> the bug database (maybe with a reference to the email that
Mark> showed the bytecode).

I concur.  Eric's email was certainly enough for me to understand the
problem.  Eric, would you mind simply pasting the text of your email
into a new gcj Gnats PR?

Mark> I am afraid that gcj does not yet compile on cygwin, although
Mark> there is currently a lot of work done to get it to compile on
Mark> Windows (if mingw is the same kind of thing as cygwin).

Sort of.

Adam's work is targeted at being able to build a linux-x-mingw
toolchain.  This means you'll be able to run gcj on Linux and have it
generate a Windows executable.

After his work you still won't be able to build a native Cygwin (or
Windows) compiler.  There are still some remaining compiler bugs
relating to case-insensitive file systems.  (The ongoing Darwin port
avoids this by requiring you to use a case-sensitive fs.)  (The bugs
are probably not too hard to fix, but nobody has seriously looked into
it.)

Tom

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Re: Trouble with gcj 3.0.4 (BasicPermission.java)

2002-02-08 Thread Tom Tromey

> "Mark" == Mark Wielaard <[EMAIL PROTECTED]> writes:

Mark> I think a branch is a little over the top for this release.

Perhaps.  I think someday we'll have to do branches.  Sometimes it is
helpful to work out the process before you really need it.  (With
automake I found I didn't know I needed a branch until it was too
late... so obviously that experience colors my perception.)

Mark> So I will just commit the workaround with the words FIXME, gcj,
Mark> workaround and/or bug.

Works for me, thanks.

Tom

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



Re: make dist fixes

2002-02-08 Thread Mark Wielaard

Hi,

On Sat, 2002-02-09 at 03:51, Tom Tromey wrote:
> > "Mark" == Mark Wielaard <[EMAIL PROTECTED]> writes:
> 
> Mark> That (and the example) seems to make sense. But it also means
> Mark> that we don't have one bug in jikes, but two bugs, one in ORP
> Mark> and one in gcj byte code generation. Sigh.
> 
> If you have the time, would you mind constructing a test case so we
> can see if gij also has the runtime bug?  I'd appreciate that.

Simple tests don't show the bug with either orp or gij (it must be
something special about gnu/java/io/encode/Encoder8859_* (the workaround
that Eric posted does work though). But the following Test which fails
with orp seems to succeed with gij.

public class Test
{
  public static void main(String[] args)
  {
new gnu.java.io.encode.Encoder8859_1(null);
  }
}

A quick look in interpret.cc and resolve.cc also seems to suggest to me
that gij is doing the correct thing.

Cheers,

Mark

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath



The release

2002-02-08 Thread Mark Wielaard

Hi,

It is Saturday already (for me) and I did not do everything I wanted to
for the release (fix last build glitches and try some bigger tests/setup
mauve). I can spend some time tomorrow to polish it a bit more and test
it better. But it is already much, much better then the 0.02 release
that we have now (and which people still seem to download now and then).

Brian, if you just want to make a release now please go ahead and I will
do the announcements first thing in the morning. If you think it can use
some more polish (it can probably always use some more polish) then I
will try to polish it some more tomorrow.

Cheers,

Mark

___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath