diff options
Diffstat (limited to 'libjava/java/lang')
-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; } |