[Bug java/19285] New: Interfaces not initialized by static field access
mckinlay at redhat dot com
gcc-bugzilla@gcc.gnu.org
Thu Jan 6 02:19:00 GMT 2005
Consider the following test case:
public class Test implements RuntimeConstants
{
public static void main(String[] args)
{
System.out.println(foo[0]);
}
}
interface RuntimeConstants
{
static int foo[] = {1};
}
Older bytecode compilers would implement the access to "foo" like so:
3: getstatic <Field RuntimeConstants.foo int[]>
However, presumably for reasons of binary compatibility, bytecode produced by
some modern Java compilers (javac 1.5.0 with "-target" >= 1.3) does the following:
3: getstatic <Field Test.foo int[]>
When "foo" is actually in an interface, there is a problem for GCJ because we
have no way to ensure that the interface gets initialized when it is accessed.
Initialization of a class does not itself cause initialization of its
superinterfaces.
--
Summary: Interfaces not initialized by static field access
Product: gcc
Version: 4.0.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: java
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: mckinlay at redhat dot com
CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu
dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19285
More information about the Java-prs
mailing list