public inbox for java-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug java/26390]  New: Problem dispatching method call when method does not exist in superclass
@ 2006-02-21  8:32 david at jpackage dot org
  2006-02-22 14:31 ` [Bug java/26390] " pinskia at gcc dot gnu dot org
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: david at jpackage dot org @ 2006-02-21  8:32 UTC (permalink / raw)
  To: java-prs

Classpath 0.21-pre contains the following code in
gnu/java/awt/peer/swing/SwingFramePeer.java:

   public void setBounds(int x, int y, int w, int h)
   {
     super.setBounds(x, y, w, h);
     if (menuBar != null)
       menuBar.setWidth(w);

where the method setBounds(int, int, int, int) does not exist in the immediate
superclass (SwingWindowPeer). The class appears to compile, but during the
linking phase we get undefined reference to
java::awt::peer::swing::SwingWindowPeer::setBounds(int, int, int, int).


-- 
           Summary: Problem dispatching method call when method does not
                    exist in superclass
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: java
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: david at jpackage dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26390


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug java/26390] Problem dispatching method call when method does not exist in superclass
  2006-02-21  8:32 [Bug java/26390] New: Problem dispatching method call when method does not exist in superclass david at jpackage dot org
@ 2006-02-22 14:31 ` pinskia at gcc dot gnu dot org
  2006-03-09  3:16 ` mckinlay at redhat dot com
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-02-22 14:31 UTC (permalink / raw)
  To: java-prs



------- Comment #1 from pinskia at gcc dot gnu dot org  2006-02-22 14:31 -------
I have seen a bug like this before.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26390


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug java/26390] Problem dispatching method call when method does not exist in superclass
  2006-02-21  8:32 [Bug java/26390] New: Problem dispatching method call when method does not exist in superclass david at jpackage dot org
  2006-02-22 14:31 ` [Bug java/26390] " pinskia at gcc dot gnu dot org
@ 2006-03-09  3:16 ` mckinlay at redhat dot com
  2006-03-10 18:13 ` mark at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: mckinlay at redhat dot com @ 2006-03-09  3:16 UTC (permalink / raw)
  To: java-prs



------- Comment #2 from mckinlay at redhat dot com  2006-03-09 03:16 -------
Can anyone make a test case for this? I was unable to reproduce it.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26390


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug java/26390] Problem dispatching method call when method does not exist in superclass
  2006-02-21  8:32 [Bug java/26390] New: Problem dispatching method call when method does not exist in superclass david at jpackage dot org
  2006-02-22 14:31 ` [Bug java/26390] " pinskia at gcc dot gnu dot org
  2006-03-09  3:16 ` mckinlay at redhat dot com
@ 2006-03-10 18:13 ` mark at gcc dot gnu dot org
  2006-03-10 23:00 ` tromey at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: mark at gcc dot gnu dot org @ 2006-03-10 18:13 UTC (permalink / raw)
  To: java-prs



------- Comment #3 from mark at gcc dot gnu dot org  2006-03-10 18:13 -------
While importing 0.90 into libgcj I also noticed this. Setting this package to
bc (like the other awt peer implementations) gives:

make[3]: Entering directory `/home/mark/src/gcc-obj/i686-pc-linux-gnu/libjava'
/bin/sh ./libtool --mode=compile /home/mark/src/gcc-obj/gcc/gcj
-B/home/mark/src/gcc-obj/i686-pc-linux-gnu/libjava/
-B/home/mark/src/gcc-obj/gcc/ -ffloat-store -fomit-frame-pointer -fclasspath=
-fbootclasspath=/home/mark/src/gcc-obj/i686-pc-linux-gnu/libjava/classpath/lib
--encoding=UTF-8 -Wno-deprecated -fbootstrap-classes -g -O2 -fjni
-findirect-dispatch -c -o gnu-java-awt-peer-swing.lo
@gnu-java-awt-peer-swing.list
/home/mark/src/gcc-obj/gcc/gcj
-B/home/mark/src/gcc-obj/i686-pc-linux-gnu/libjava/
-B/home/mark/src/gcc-obj/gcc/ -ffloat-store -fomit-frame-pointer -fclasspath=
-fbootclasspath=/home/mark/src/gcc-obj/i686-pc-linux-gnu/libjava/classpath/lib
--encoding=UTF-8 -Wno-deprecated -fbootstrap-classes -g -O2 -fjni
-findirect-dispatch -c @gnu-java-awt-peer-swing.list -fPIC -o
.libs/gnu-java-awt-peer-swing.o
gnu/java/awt/peer/swing/SwingFramePeer.java: In class
'gnu.java.awt.peer.swing.SwingFramePeer':
gnu/java/awt/peer/swing/SwingFramePeer.java: In method
'gnu.java.awt.peer.swing.SwingFramePeer.setBounds(int,int,int,int)':
gnu/java/awt/peer/swing/SwingFramePeer.java:118: error: verification failed at
PC=6: didn't see expected constant
make[3]: *** [gnu-java-awt-peer-swing.lo] Error 1

where line 118 is indeed:
     super.setBounds(x, y, w, h);


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26390


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug java/26390] Problem dispatching method call when method does not exist in superclass
  2006-02-21  8:32 [Bug java/26390] New: Problem dispatching method call when method does not exist in superclass david at jpackage dot org
                   ` (2 preceding siblings ...)
  2006-03-10 18:13 ` mark at gcc dot gnu dot org
@ 2006-03-10 23:00 ` tromey at gcc dot gnu dot org
  2006-03-11  1:40 ` tromey at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: tromey at gcc dot gnu dot org @ 2006-03-10 23:00 UTC (permalink / raw)
  To: java-prs



-- 

tromey at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |tromey at gcc dot gnu dot
                   |                            |org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2006-03-10 23:00:01
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26390


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug java/26390] Problem dispatching method call when method does not exist in superclass
  2006-02-21  8:32 [Bug java/26390] New: Problem dispatching method call when method does not exist in superclass david at jpackage dot org
                   ` (3 preceding siblings ...)
  2006-03-10 23:00 ` tromey at gcc dot gnu dot org
@ 2006-03-11  1:40 ` tromey at gcc dot gnu dot org
  2006-03-13 17:10 ` tromey at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: tromey at gcc dot gnu dot org @ 2006-03-11  1:40 UTC (permalink / raw)
  To: java-prs



------- Comment #4 from tromey at gcc dot gnu dot org  2006-03-11 01:40 -------
Mark's problem appears to be a bytecode generation bug.
We are generating:

  6: invokespecial #65=<InterfaceMethod java.awt.peer.WindowPeer.setBounds
(int,int,int,int)void>

But this is incorrect as you cannot invoke an interface method
with invokespecial.  And, super.foo() should never call an
interface method anyway.

I don't know whether or how the original report is related,
but it isn't unreasonable to assume that it is.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26390


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug java/26390] Problem dispatching method call when method does not exist in superclass
  2006-02-21  8:32 [Bug java/26390] New: Problem dispatching method call when method does not exist in superclass david at jpackage dot org
                   ` (4 preceding siblings ...)
  2006-03-11  1:40 ` tromey at gcc dot gnu dot org
@ 2006-03-13 17:10 ` tromey at gcc dot gnu dot org
  2006-03-13 17:12 ` tromey at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: tromey at gcc dot gnu dot org @ 2006-03-13 17:10 UTC (permalink / raw)
  To: java-prs



------- Comment #5 from tromey at gcc dot gnu dot org  2006-03-13 17:10 -------
Created an attachment (id=11043)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11043&action=view)
reduced test case

I'm attaching a reduced test case.
If you remove one of the intermediate classes, the
output is correct.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26390


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug java/26390] Problem dispatching method call when method does not exist in superclass
  2006-02-21  8:32 [Bug java/26390] New: Problem dispatching method call when method does not exist in superclass david at jpackage dot org
                   ` (5 preceding siblings ...)
  2006-03-13 17:10 ` tromey at gcc dot gnu dot org
@ 2006-03-13 17:12 ` tromey at gcc dot gnu dot org
  2006-03-13 19:07 ` tromey at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: tromey at gcc dot gnu dot org @ 2006-03-13 17:12 UTC (permalink / raw)
  To: java-prs



------- Comment #6 from tromey at gcc dot gnu dot org  2006-03-13 17:12 -------
I added a main to the reduced test case:

  public static void main(String[] args)
  {
    SwingFramePeer s = new SwingFramePeer();
    s.setBounds();
  }

With this I can almost reproduce the original bug:

opsy. gcj --main=pr26390 -o P pr26390.java
/tmp/cczetk2m.o(.text+0xd): In function `void
pr26390$SwingFramePeer::setBounds()':
pr26390.java: undefined reference to `void pr26390$WindowPeer::setBounds()'

I say "almost" since from the original report I would expect
the missing method to come from SwingWindowPeer.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26390


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug java/26390] Problem dispatching method call when method does not exist in superclass
  2006-02-21  8:32 [Bug java/26390] New: Problem dispatching method call when method does not exist in superclass david at jpackage dot org
                   ` (6 preceding siblings ...)
  2006-03-13 17:12 ` tromey at gcc dot gnu dot org
@ 2006-03-13 19:07 ` tromey at gcc dot gnu dot org
  2006-03-15 18:29 ` tromey at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: tromey at gcc dot gnu dot org @ 2006-03-13 19:07 UTC (permalink / raw)
  To: java-prs



------- Comment #7 from tromey at gcc dot gnu dot org  2006-03-13 19:07 -------
The bug here is that gcj implements method inheritance incorrectly.
In particular it does not consider SwingWindowPeer.setBounds
as a candidate method for the super.setBounds() call, because it
has no notion that there is a method named "SwingWindowPeer.setBounds".
Instead it only considers SwingComponentPeer.setBounds -- which is
not maximal and thus not selected.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26390


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug java/26390] Problem dispatching method call when method does not exist in superclass
  2006-02-21  8:32 [Bug java/26390] New: Problem dispatching method call when method does not exist in superclass david at jpackage dot org
                   ` (7 preceding siblings ...)
  2006-03-13 19:07 ` tromey at gcc dot gnu dot org
@ 2006-03-15 18:29 ` tromey at gcc dot gnu dot org
  2006-03-15 18:31 ` tromey at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: tromey at gcc dot gnu dot org @ 2006-03-15 18:29 UTC (permalink / raw)
  To: java-prs



------- Comment #8 from tromey at gcc dot gnu dot org  2006-03-15 18:29 -------
Subject: Bug 26390

Author: tromey
Date: Wed Mar 15 18:29:44 2006
New Revision: 112093

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=112093
Log:
gcc/java
        PR java/26390:
        * class.c (get_interface_method_index): Don't put <clinit> into
        interface table.
libjava
        PR java/26390:
        * link.cc (get_interfaces): Skip <clinit>.
        (append_partial_itable): Likewise.

Modified:
    trunk/gcc/java/ChangeLog
    trunk/gcc/java/class.c
    trunk/libjava/ChangeLog
    trunk/libjava/link.cc


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26390


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug java/26390] Problem dispatching method call when method does not exist in superclass
  2006-02-21  8:32 [Bug java/26390] New: Problem dispatching method call when method does not exist in superclass david at jpackage dot org
                   ` (8 preceding siblings ...)
  2006-03-15 18:29 ` tromey at gcc dot gnu dot org
@ 2006-03-15 18:31 ` tromey at gcc dot gnu dot org
  2006-03-29 16:32 ` tromey at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: tromey at gcc dot gnu dot org @ 2006-03-15 18:31 UTC (permalink / raw)
  To: java-prs



------- Comment #9 from tromey at gcc dot gnu dot org  2006-03-15 18:31 -------
Oops -- that was the wrong PR number in that patch.
That commit was for PR 26638.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26390


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug java/26390] Problem dispatching method call when method does not exist in superclass
  2006-02-21  8:32 [Bug java/26390] New: Problem dispatching method call when method does not exist in superclass david at jpackage dot org
                   ` (9 preceding siblings ...)
  2006-03-15 18:31 ` tromey at gcc dot gnu dot org
@ 2006-03-29 16:32 ` tromey at gcc dot gnu dot org
  2006-03-29 16:36 ` tromey at gcc dot gnu dot org
  2006-12-28 15:45 ` rob1weld at aol dot com
  12 siblings, 0 replies; 14+ messages in thread
From: tromey at gcc dot gnu dot org @ 2006-03-29 16:32 UTC (permalink / raw)
  To: java-prs



------- Comment #10 from tromey at gcc dot gnu dot org  2006-03-29 16:32 -------
Subject: Bug 26390

Author: tromey
Date: Wed Mar 29 16:31:53 2006
New Revision: 112499

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=112499
Log:
gcc/java
        PR java/26390:
        * parse.y (find_most_specific_methods_list): Added 'class'
        argument.
        (lookup_method_invoke): Updated.
libjava
        PR java/26390:
        * testsuite/libjava.lang/pr26390.out: New file.
        * testsuite/libjava.lang/pr26390.java: New file.
        * sources.am, Makefile.in: Rebuilt.
        * scripts/makemake.tcl: Compile gnu/java/awt/peer/swing.

Added:
    trunk/libjava/testsuite/libjava.lang/pr26390.java
    trunk/libjava/testsuite/libjava.lang/pr26390.out
Modified:
    trunk/gcc/java/ChangeLog
    trunk/gcc/java/parse.y
    trunk/libjava/ChangeLog
    trunk/libjava/Makefile.in
    trunk/libjava/scripts/makemake.tcl
    trunk/libjava/sources.am


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26390


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug java/26390] Problem dispatching method call when method does not exist in superclass
  2006-02-21  8:32 [Bug java/26390] New: Problem dispatching method call when method does not exist in superclass david at jpackage dot org
                   ` (10 preceding siblings ...)
  2006-03-29 16:32 ` tromey at gcc dot gnu dot org
@ 2006-03-29 16:36 ` tromey at gcc dot gnu dot org
  2006-12-28 15:45 ` rob1weld at aol dot com
  12 siblings, 0 replies; 14+ messages in thread
From: tromey at gcc dot gnu dot org @ 2006-03-29 16:36 UTC (permalink / raw)
  To: java-prs



------- Comment #11 from tromey at gcc dot gnu dot org  2006-03-29 16:36 -------
Fix checked in.


-- 

tromey at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|---                         |4.2.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26390


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug java/26390] Problem dispatching method call when method does not exist in superclass
  2006-02-21  8:32 [Bug java/26390] New: Problem dispatching method call when method does not exist in superclass david at jpackage dot org
                   ` (11 preceding siblings ...)
  2006-03-29 16:36 ` tromey at gcc dot gnu dot org
@ 2006-12-28 15:45 ` rob1weld at aol dot com
  12 siblings, 0 replies; 14+ messages in thread
From: rob1weld at aol dot com @ 2006-12-28 15:45 UTC (permalink / raw)
  To: java-prs



------- Comment #12 from rob1weld at aol dot com  2006-12-28 15:45 -------
(In reply to comment #11)
> Fix checked in.

I'm not an expert with Java but am trying to compile gcc 4_2 branch (CVS)
and I have the same problem as is described in this bug report. The fixes
mentioned in this report _seem_ to have been applied but am getting a 'similar'
error message:

Here is the part of the make where it fails:

/bin/sh ./libtool --mode=compile /cygdrive/c/gcc-4_2-branch-build/gcc/gcj
-B/cygdrive/c/gcc-4_2-branch-build/athlon_xp-pc-cygwin/libjava/
-B/cygdrive/c/gcc-4_2-branch-build/gcc/ -ffloat-store -fomit-frame-pointer
-fclasspath=
-fbootclasspath=/cygdrive/c/gcc-4_2-branch-build/athlon_xp-pc-cygwin/libjava/classpath/lib
--encoding=UTF-8 -Wno-deprecated -fbootstrap-classes -g -O2 -fjni
-findirect-dispatch -fno-indirect-classes -c -o gnu-java-awt-peer-swing.lo
@gnu-java-awt-peer-swing.list
/cygdrive/c/gcc-4_2-branch-build/gcc/gcj
-B/cygdrive/c/gcc-4_2-branch-build/athlon_xp-pc-cygwin/libjava/
-B/cygdrive/c/gcc-4_2-branch-build/gcc/ -ffloat-store -fomit-frame-pointer
-fclasspath= -fbootclasspath=/
cygdrive/c/gcc-4_2-branch-build/athlon_xp-pc-cygwin/libjava/classpath/lib
--encoding=UTF-8 -Wno-deprecate
d -fbootstrap-classes -g -O2 -fjni -findirect-dispatch -fno-indirect-classes -c
@gnu-java-awt-peer-swing.list 
-o gnu-java-awt-peer-swing.o
gnu/java/awt/peer/swing/SwingFramePeer.java: In class
'gnu.java.awt.peer.swing.SwingFramePeer':
gnu/java/awt/peer/swing/SwingFramePeer.java: In method
'gnu.java.awt.peer.swing.SwingFramePeer.setBounds(int,int,int,int)':
gnu/java/awt/peer/swing/SwingFramePeer.java:118: error: verification failed at
PC=6: didn't see expected constant
make[3]: *** [gnu-java-awt-peer-swing.lo] Error 1
make[3]: Target `all-am' not remade because of errors.
make[3]: Leaving directory
`/cygdrive/c/gcc-4_2-branch-build/athlon_xp-pc-cygwin/libjava'

I'll leave any 'fixing' to someone more expert at java (so I don't break gcc
somewhere else :( ). I tried changing to above to simply use system's gcj:

gcj  -c -o gnu-java-awt-peer-swing.lo @gnu-java-awt-peer-swing.list

This is the message I got:

gnu/java/awt/peer/swing/SwingFramePeer.java: In class
'gnu.java.awt.peer.swing.SwingFramePeer':
gnu/java/awt/peer/swing/SwingFramePeer.java: In method
'gnu.java.awt.peer.swing.SwingFramePeer.setBounds(int,int,int,int)':
gnu/java/awt/peer/swing/SwingFramePeer.java:118: error: verification failed at
PC=6: didn't see expected constant
gnu/java/awt/peer/swing/SwingFramePeer.java:118: error: class
'java.awt.peer.WindowPeer' has no method named 'setBounds' matching signature
'(IIII)V'
gnu/java/awt/peer/swing/SwingFramePeer.java:119: confused by earlier errors,
bailing out


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26390


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2006-12-28 15:45 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-02-21  8:32 [Bug java/26390] New: Problem dispatching method call when method does not exist in superclass david at jpackage dot org
2006-02-22 14:31 ` [Bug java/26390] " pinskia at gcc dot gnu dot org
2006-03-09  3:16 ` mckinlay at redhat dot com
2006-03-10 18:13 ` mark at gcc dot gnu dot org
2006-03-10 23:00 ` tromey at gcc dot gnu dot org
2006-03-11  1:40 ` tromey at gcc dot gnu dot org
2006-03-13 17:10 ` tromey at gcc dot gnu dot org
2006-03-13 17:12 ` tromey at gcc dot gnu dot org
2006-03-13 19:07 ` tromey at gcc dot gnu dot org
2006-03-15 18:29 ` tromey at gcc dot gnu dot org
2006-03-15 18:31 ` tromey at gcc dot gnu dot org
2006-03-29 16:32 ` tromey at gcc dot gnu dot org
2006-03-29 16:36 ` tromey at gcc dot gnu dot org
2006-12-28 15:45 ` rob1weld at aol dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).