ClassLoader.java (setSigners): Implemented.
authorTom Tromey <tromey@redhat.com>
Thu, 9 Oct 2003 16:24:55 +0000 (16:24 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Thu, 9 Oct 2003 16:24:55 +0000 (16:24 +0000)
* 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

libjava/ChangeLog
libjava/boehm.cc
libjava/java/lang/Class.h
libjava/java/lang/Class.java
libjava/java/lang/ClassLoader.java
libjava/java/lang/natClass.cc
libjava/java/lang/natClassLoader.cc

index 4a65d1148facd2d61e07ed50ccaaebbf60af6d2f..0c6ec096682fce8d3992dfcf644745f80065dee3 100644 (file)
@@ -1,3 +1,16 @@
+2003-10-09  Tom Tromey  <tromey@redhat.com>
+
+       * 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.
+
 2003-10-09  Michael Koch  <konqueror@gmx.de>
 
        * java/rmi/server/RMIClassLoader.java:
index af5f979197d3214f68422d21747dac9d06b32f25..732408855100d964da3bdaa666bf45b5c9a01d92 100644 (file)
@@ -206,6 +206,8 @@ _Jv_MarkObj (void *addr, void *msp, void *msl, void * /* env */)
       MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, c, cDlabel);
       p = (ptr_t) c->protectionDomain;
       MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, c, cPlabel);
+      p = (ptr_t) c->signers;
+      MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, c, cSlabel);
 
 #ifdef INTERPRETER
       if (_Jv_IsInterpretedClass (c))
index 7572c6cfdb2920566d8c79d17762d4f1138b1d60..5cf6e2c0ce3d1739ac0fd43c5a2e332c88d570f1 100644 (file)
@@ -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;
 };
index 86d52be4b87b18e79f3f6ac739d566821c5e379d..6fd4ff07d48634d2eb496206b6f543abdf934e9e 100644 (file)
@@ -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 ();
index 103976758d7faacfa4e406fab4aedb0982925ab8..7bbd6412554c4f17a8bb1a2a0a2fe81c280bfff3 100644 (file)
@@ -502,7 +502,7 @@ public abstract class ClassLoader
    */
   protected final void setSigners(Class c, Object[] signers)
   {
-    //    c.setSigners(signers);
+    c.setSigners(signers);
   }
 
   /**
index aa5867fc8711db8916e2c9c41ab8b226205d7e7a..4c71ed1cea03fd4272fbe98b84665db6fc705504 100644 (file)
@@ -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
index e3519f33c5b6ea2222b2008ec363a98221c8809f..10b4bc64e23ab3ee81218a5eb598ab8526cb727e 100644 (file)
@@ -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;
 }