diff options
author | Andrew Haley <aph@redhat.com> | 2004-06-21 16:52:14 +0000 |
---|---|---|
committer | Andrew Haley <aph@gcc.gnu.org> | 2004-06-21 16:52:14 +0000 |
commit | deb3d52fec87690fed1a14aa4f8666a59f0fcc14 (patch) | |
tree | 3a45653fc7061bc610f982b563c34279fc5ae046 /libjava/java/io/natObjectInputStream.cc | |
parent | 413ed876c51b0b85661e938b1914dcd3821066f7 (diff) | |
download | gcc-deb3d52fec87690fed1a14aa4f8666a59f0fcc14.zip gcc-deb3d52fec87690fed1a14aa4f8666a59f0fcc14.tar.gz gcc-deb3d52fec87690fed1a14aa4f8666a59f0fcc14.tar.bz2 |
ObjectOutputStream.java: Add DEBUG statements everywhere.
2004-06-21 Andrew Haley <aph@redhat.com>
* java/io/ObjectOutputStream.java: Add DEBUG statements
everywhere.
(dumpElementln): New method.
(depth): New field.
* java/io/ObjectInputStream.java
(currentClassLoader): Make native.
(callersClassLoader): New field.
(depth): New field.
(readObject): ENDBLOCKDATA is generated if the class has a write
method, not if it has a read method.
(readObject): Save and restore this.currentObject and
this.currentObjectStreamClass around calls to callReadMethod().
* java/io/natObjectInputStream.cc (getCallersClassLoader): New
method.
From-SVN: r83440
Diffstat (limited to 'libjava/java/io/natObjectInputStream.cc')
-rw-r--r-- | libjava/java/io/natObjectInputStream.cc | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/libjava/java/io/natObjectInputStream.cc b/libjava/java/io/natObjectInputStream.cc index bb3796f..9da4910 100644 --- a/libjava/java/io/natObjectInputStream.cc +++ b/libjava/java/io/natObjectInputStream.cc @@ -19,6 +19,8 @@ details. */ #include <java/lang/Class.h> #include <java/lang/reflect/Modifier.h> #include <java/lang/reflect/Method.h> +#include <java/lang/ArrayIndexOutOfBoundsException.h> +#include <java/lang/SecurityManager.h> #ifdef DEBUG #include <java/lang/System.h> @@ -69,3 +71,33 @@ java::io::ObjectInputStream::callConstructor (jclass klass, jobject obj) + m->offset); _Jv_CallAnyMethodA (obj, JvPrimClass (void), meth, false, arg_types, NULL); } + +java::lang::ClassLoader* +java::io::ObjectInputStream::getCallersClassLoader () +{ + java::lang::ClassLoader *loader = NULL; + gnu::gcj::runtime::StackTrace *t + = new gnu::gcj::runtime::StackTrace(4); + java::lang::Class *klass = NULL; + try + { + for (int i = 2; !klass; i++) + { + klass = t->classAt (i); + } + loader = klass->getClassLoaderInternal(); + } + catch (::java::lang::ArrayIndexOutOfBoundsException *e) + { + // FIXME: RuntimeError + } + + return loader; +} + +java::lang::ClassLoader* +java::io::ObjectInputStream::currentClassLoader (::java::lang::SecurityManager *sm) +{ + return sm->currentClassLoader (); +} + |