From: Tom Tromey Date: Fri, 16 Aug 2002 21:49:33 +0000 (+0000) Subject: gcj.texi (Class Initialization): Mention class initialization of arrays. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ca75573a5d8f17e1baa009caef0ea72bcece3932;p=gcc.git gcj.texi (Class Initialization): Mention class initialization of arrays. * gcj.texi (Class Initialization): Mention class initialization of arrays. From-SVN: r56386 --- diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 9f35084a236..962e409edc9 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +2002-08-16 Tom Tromey + + * gcj.texi (Class Initialization): Mention class initialization of + arrays. + 2002-07-30 Andrew Haley * Make-lang.in (java-tree-inline.o): New. diff --git a/gcc/java/gcj.texi b/gcc/java/gcj.texi index 165f122118c..ac1702f2503 100644 --- a/gcc/java/gcj.texi +++ b/gcc/java/gcj.texi @@ -1316,16 +1316,17 @@ programmer's responsibility to make sure classes are initialized. However, this is fairly painless because of the conventions assumed by the Java system. -First, @code{libgcj} will make sure a class is initialized -before an instance of that object is created. This is one -of the responsibilities of the @code{new} operation. This is -taken care of both in Java code, and in C++ code. (When the G++ -compiler sees a @code{new} of a Java class, it will call -a routine in @code{libgcj} to allocate the object, and that -routine will take care of initializing the class.) It follows that you can -access an instance field, or call an instance (non-static) -method and be safe in the knowledge that the class and all -of its base classes have been initialized. +First, @code{libgcj} will make sure a class is initialized before an +instance of that object is created. This is one of the +responsibilities of the @code{new} operation. This is taken care of +both in Java code, and in C++ code. When G++ sees a @code{new} of a +Java class, it will call a routine in @code{libgcj} to allocate the +object, and that routine will take care of initializing the class. +Note however that this does not happen for Java arrays; you must +allocate those using the appropriate CNI function. It follows that +you can access an instance field, or call an instance (non-static) +method and be safe in the knowledge that the class and all of its base +classes have been initialized. Invoking a static method is also safe. This is because the Java compiler adds code to the start of a static method to make sure