There are two pieces of code in gnuDynValue that generate unverifiable (and wrong!) code. The following method in this file: public int component_count() { return isNull ? 0 : super.component_count(); } Generates the following byte code: Method name:"component_count" public Signature: ()int Attribute "Code", length:38, max_stack:2, max_locals:1, code_length:14 0: aload_0 1: getfield <Field gnu.CORBA.DynAn.gnuDynValue.isNull boolean> 4: ifeq 9 7: iconst_0 8: ireturn 9: aload_0 10: invokespecial <InterfaceMethod org.omg.DynamicAny.DynAny.component_count ()int> 13: ireturn Attribute "LineNumberTable", length:6, count: 1 line: 369 at pc: 0 PC 10 is wrong. And the verifier actually catches that: gnu/CORBA/DynAn/gnuDynValue.java: In class 'gnu.CORBA.DynAn.gnuDynValue': gnu/CORBA/DynAn/gnuDynValue.java: In method 'gnu.CORBA.DynAn.gnuDynValue.component_count()': gnu/CORBA/DynAn/gnuDynValue.java:369: error: verification failed at PC=10: didn't see expected constant Another method in this file that exhibits this is: public boolean equal(DynAny other) { if (other instanceof DynValueOperations) { DynValueCommon o = (DynValueCommon) other; if (isNull) return o.is_null() && o.type().equal(official_type); else return !o.is_null() && super.equal(other); } else return false; } That last super.equal() call generates the same wrong code. This might be an existing bug, but I couldn't quickly find it. I have a workaround for this issue that I want to get in before reducing this.
*** Bug 24184 has been marked as a duplicate of this bug. ***
By the way it was PR 24184 which I closed as a dup of this one since this has more information.
http://gcc.gnu.org/ml/java-patches/2005-q4/msg00218.html contains a workaround for this issue. The override files can be removed when this bug is closed.
Subject: Bug 24938 Author: mark Date: Fri Nov 25 22:30:53 2005 New Revision: 107522 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=107522 Log: * standard.omit.in: Remove javax/rmi, org/omg, gnu/CORBA and gnu/javax/rmi. * scripts/makemake.tcl: Set javax/rmi, org/omg, gnu/CORBA and gnu/javax/rmi to bc. * gnu/CORBA/ObjectCreator.java: New override file for missing VMStackWalker issue. * gnu/CORBA/DynAn/gnuDynValue.java: New override file for bug #24938 * gnu/CORBA/DynAn/RecordAny.java: Likewise * sources.am: Regenerated. * Makefile.in: Regenerated Added: trunk/libjava/gnu/CORBA/ trunk/libjava/gnu/CORBA/DynAn/ trunk/libjava/gnu/CORBA/DynAn/RecordAny.java trunk/libjava/gnu/CORBA/DynAn/gnuDynValue.java trunk/libjava/gnu/CORBA/ObjectCreator.java Modified: trunk/libjava/ChangeLog trunk/libjava/Makefile.in trunk/libjava/scripts/makemake.tcl trunk/libjava/sources.am trunk/libjava/standard.omit.in
Subject: Bug 24938 Author: mark Date: Sat Nov 26 00:48:29 2005 New Revision: 107534 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=107534 Log: * standard.omit.in: Remove javax/rmi, org/omg, gnu/CORBA and gnu/javax/rmi. * scripts/makemake.tcl: Set javax/rmi, org/omg, gnu/CORBA and gnu/javax/rmi to bc. * gnu/CORBA/ObjectCreator.java: New override file for missing VMStackWalker issue. * gnu/CORBA/DynAn/gnuDynValue.java: New override file for bug #24938 * gnu/CORBA/DynAn/RecordAny.java: Likewise * sources.am: Regenerated. * Makefile.in: Regenerated Added: branches/gcc-4_1-branch/libjava/gnu/CORBA/ - copied from r107522, trunk/libjava/gnu/CORBA/ Modified: branches/gcc-4_1-branch/libjava/ChangeLog branches/gcc-4_1-branch/libjava/Makefile.in branches/gcc-4_1-branch/libjava/scripts/makemake.tcl branches/gcc-4_1-branch/libjava/sources.am branches/gcc-4_1-branch/libjava/standard.omit.in
Subject: Bug 24938 Author: tromey Date: Wed Dec 6 19:35:05 2006 New Revision: 119593 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=119593 Log: PR java/24938: * sources.am, Makefile.in: Rebuilt. * gnu/CORBA/DynAn/gnuDynValue.java: Removed. * gnu/CORBA/DynAn/RecordAny.java: Removed. * gnu/CORBA/DynAn/RecordAny.h: Rebuilt. Removed: branches/gcj/gcj-eclipse-merge-branch/libjava/gnu/CORBA/DynAn/RecordAny.java branches/gcj/gcj-eclipse-merge-branch/libjava/gnu/CORBA/DynAn/gnuDynValue.java Modified: branches/gcj/gcj-eclipse-merge-branch/libjava/ChangeLog branches/gcj/gcj-eclipse-merge-branch/libjava/Makefile.in branches/gcj/gcj-eclipse-merge-branch/libjava/gnu/CORBA/DynAn/RecordAny.h branches/gcj/gcj-eclipse-merge-branch/libjava/sources.am
Subject: Bug 24938 Author: gary Date: Thu Dec 7 12:30:56 2006 New Revision: 119617 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=119617 Log: 2006-12-06 Tom Tromey <tromey@redhat.com> PR java/24938: * sources.am, Makefile.in: Rebuilt. * gnu/CORBA/DynAn/gnuDynValue.java: Removed. * gnu/CORBA/DynAn/RecordAny.java: Removed. * gnu/CORBA/DynAn/RecordAny.h: Rebuilt. Modified: branches/gcj/gcj-eclipse-merge-branch/libjava/classpath/lib/gnu/CORBA/DynAn/RecordAny.class branches/gcj/gcj-eclipse-merge-branch/libjava/classpath/lib/gnu/CORBA/DynAn/gnuDynValue.class
All gcj front end bugs have been fixed by the gcj-eclipse branch merge. I'm mass-closing the affected PRs. If you believe one of these was closed in error, please reopen it with a note explaining why. Thanks.