diff options
author | Tom Tromey <tromey@redhat.com> | 2002-08-16 21:49:33 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2002-08-16 21:49:33 +0000 |
commit | ca75573a5d8f17e1baa009caef0ea72bcece3932 (patch) | |
tree | a81a851051e84ed06c1f2de52ebdce8c9f6f65f9 | |
parent | f97a5bda3af8c5396ed5704b78ec634c82987a48 (diff) | |
download | gcc-ca75573a5d8f17e1baa009caef0ea72bcece3932.zip gcc-ca75573a5d8f17e1baa009caef0ea72bcece3932.tar.gz gcc-ca75573a5d8f17e1baa009caef0ea72bcece3932.tar.bz2 |
gcj.texi (Class Initialization): Mention class initialization of arrays.
* gcj.texi (Class Initialization): Mention class initialization of
arrays.
From-SVN: r56386
-rw-r--r-- | gcc/java/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/java/gcj.texi | 21 |
2 files changed, 16 insertions, 10 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 9f35084..962e409 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +2002-08-16 Tom Tromey <tromey@redhat.com> + + * gcj.texi (Class Initialization): Mention class initialization of + arrays. + 2002-07-30 Andrew Haley <aph@cambridge.redhat.com> * Make-lang.in (java-tree-inline.o): New. diff --git a/gcc/java/gcj.texi b/gcc/java/gcj.texi index 165f122..ac1702f 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 |