From 2dc14c9e6b2bec610b66b59bb2431c87bf71dd5c Mon Sep 17 00:00:00 2001 From: tromey Date: Thu, 9 Oct 2003 16:24:55 +0000 Subject: * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72271 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/java/lang/Class.h | 3 +++ libjava/java/lang/Class.java | 7 ++----- libjava/java/lang/ClassLoader.java | 2 +- libjava/java/lang/natClass.cc | 12 ++++++++++++ libjava/java/lang/natClassLoader.cc | 4 ++++ 5 files changed, 22 insertions(+), 6 deletions(-) (limited to 'libjava/java') diff --git a/libjava/java/lang/Class.h b/libjava/java/lang/Class.h index 7572c6cfdb2..5cf6e2c0ce3 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 *getSigners (void); + void setSigners(JArray *); 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 *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 86d52be4b87..6fd4ff07d48 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 103976758d7..7bbd6412554 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 aa5867fc871..4c71ed1cea0 100644 --- a/libjava/java/lang/natClass.cc +++ b/libjava/java/lang/natClass.cc @@ -1534,6 +1534,18 @@ java::lang::Class::getProtectionDomain0 () return protectionDomain; } +JArray * +java::lang::Class::getSigners() +{ + return signers; +} + +void +java::lang::Class::setSigners(JArray *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 e3519f33c5b..10b4bc64e23 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; } -- cgit v1.2.3