diff options
author | Tom Tromey <tromey@redhat.com> | 2003-10-09 16:24:55 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2003-10-09 16:24:55 +0000 |
commit | b379e7b0e97d9355f3965c740270d9196efe1b2b (patch) | |
tree | 727452210eb531de02f4fcf33d696da39148dbce /libjava/java | |
parent | ae125b177e74ff5566bf16a80b4530d0c485c8c3 (diff) | |
download | gcc-b379e7b0e97d9355f3965c740270d9196efe1b2b.zip gcc-b379e7b0e97d9355f3965c740270d9196efe1b2b.tar.gz gcc-b379e7b0e97d9355f3965c740270d9196efe1b2b.tar.bz2 |
ClassLoader.java (setSigners): Implemented.
* java/lang/ClassLoader.java (setSigners): Implemented.
* boehm.cc (_Jv_MarkObj): Mark `signers' field.
* java/lang/natClassLoader.cc (_Jv_InitNewClassFields):
Initialize new fields.
* java/lang/Class.java (getSigners): Now native.
(setSigners): Declare.
* java/lang/natClass.cc (getSigners): New method.
(getSigners): Likewise.
* java/lang/Class.h (Class::signers): New field.
(Class::setSigners): New method.
From-SVN: r72271
Diffstat (limited to 'libjava/java')
-rw-r--r-- | libjava/java/lang/Class.h | 3 | ||||
-rw-r--r-- | libjava/java/lang/Class.java | 7 | ||||
-rw-r--r-- | libjava/java/lang/ClassLoader.java | 2 | ||||
-rw-r--r-- | libjava/java/lang/natClass.cc | 12 | ||||
-rw-r--r-- | libjava/java/lang/natClassLoader.cc | 4 |
5 files changed, 22 insertions, 6 deletions
diff --git a/libjava/java/lang/Class.h b/libjava/java/lang/Class.h index 7572c6c..5cf6e2c 100644 --- a/libjava/java/lang/Class.h +++ b/libjava/java/lang/Class.h @@ -197,6 +197,7 @@ public: java::net::URL *getResource (jstring resourceName); java::io::InputStream *getResourceAsStream (jstring resourceName); JArray<jobject> *getSigners (void); + void setSigners(JArray<jobject> *); inline jclass getSuperclass (void) { @@ -433,6 +434,8 @@ private: jclass arrayclass; // Security Domain to which this class belongs (or null). java::security::ProtectionDomain *protectionDomain; + // Signers of this class (or null). + JArray<jobject> *signers; // Used by Jv_PopClass and _Jv_PushClass to communicate with StackTrace. jclass chain; }; diff --git a/libjava/java/lang/Class.java b/libjava/java/lang/Class.java index 86d52be..6fd4ff0 100644 --- a/libjava/java/lang/Class.java +++ b/libjava/java/lang/Class.java @@ -193,11 +193,8 @@ public final class Class implements Serializable return packageName.substring (0, end+1) + resourceName; } - // FIXME: implement. Requires java.security. - public Object[] getSigners () - { - return null; - } + public native Object[] getSigners (); + native void setSigners(Object[] signers); public native Class getSuperclass (); public native boolean isArray (); diff --git a/libjava/java/lang/ClassLoader.java b/libjava/java/lang/ClassLoader.java index 1039767..7bbd641 100644 --- a/libjava/java/lang/ClassLoader.java +++ b/libjava/java/lang/ClassLoader.java @@ -502,7 +502,7 @@ public abstract class ClassLoader */ protected final void setSigners(Class c, Object[] signers) { - // c.setSigners(signers); + c.setSigners(signers); } /** diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc index aa5867f..4c71ed1 100644 --- a/libjava/java/lang/natClass.cc +++ b/libjava/java/lang/natClass.cc @@ -1534,6 +1534,18 @@ java::lang::Class::getProtectionDomain0 () return protectionDomain; } +JArray<jobject> * +java::lang::Class::getSigners() +{ + return signers; +} + +void +java::lang::Class::setSigners(JArray<jobject> *s) +{ + signers = s; +} + // Functions for indirect dispatch (symbolic virtual binding) support. // There are two tables, atable and otable. atable is an array of diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc index e3519f3..10b4bc6 100644 --- a/libjava/java/lang/natClassLoader.cc +++ b/libjava/java/lang/natClassLoader.cc @@ -539,6 +539,9 @@ _Jv_InitNewClassFields (jclass ret) ret->field_count = 0; ret->static_field_count = 0; ret->vtable = NULL; + ret->otable_syms = NULL; + ret->atable = NULL; + ret->atable_syms = NULL; ret->interfaces = NULL; ret->loader = NULL; ret->interface_count = 0; @@ -549,6 +552,7 @@ _Jv_InitNewClassFields (jclass ret) ret->idt = NULL; ret->arrayclass = NULL; ret->protectionDomain = NULL; + ret->signers = NULL; ret->chain = NULL; } |