Commit b379e7b0 by Tom Tromey Committed by Tom Tromey

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
parent ae125b17
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> 2003-10-09 Michael Koch <konqueror@gmx.de>
* java/rmi/server/RMIClassLoader.java: * java/rmi/server/RMIClassLoader.java:
......
...@@ -206,6 +206,8 @@ _Jv_MarkObj (void *addr, void *msp, void *msl, void * /* env */) ...@@ -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); MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, c, cDlabel);
p = (ptr_t) c->protectionDomain; p = (ptr_t) c->protectionDomain;
MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, c, cPlabel); 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 #ifdef INTERPRETER
if (_Jv_IsInterpretedClass (c)) if (_Jv_IsInterpretedClass (c))
......
...@@ -197,6 +197,7 @@ public: ...@@ -197,6 +197,7 @@ public:
java::net::URL *getResource (jstring resourceName); java::net::URL *getResource (jstring resourceName);
java::io::InputStream *getResourceAsStream (jstring resourceName); java::io::InputStream *getResourceAsStream (jstring resourceName);
JArray<jobject> *getSigners (void); JArray<jobject> *getSigners (void);
void setSigners(JArray<jobject> *);
inline jclass getSuperclass (void) inline jclass getSuperclass (void)
{ {
...@@ -433,6 +434,8 @@ private: ...@@ -433,6 +434,8 @@ private:
jclass arrayclass; jclass arrayclass;
// Security Domain to which this class belongs (or null). // Security Domain to which this class belongs (or null).
java::security::ProtectionDomain *protectionDomain; java::security::ProtectionDomain *protectionDomain;
// Signers of this class (or null).
JArray<jobject> *signers;
// Used by Jv_PopClass and _Jv_PushClass to communicate with StackTrace. // Used by Jv_PopClass and _Jv_PushClass to communicate with StackTrace.
jclass chain; jclass chain;
}; };
......
...@@ -193,11 +193,8 @@ public final class Class implements Serializable ...@@ -193,11 +193,8 @@ public final class Class implements Serializable
return packageName.substring (0, end+1) + resourceName; return packageName.substring (0, end+1) + resourceName;
} }
// FIXME: implement. Requires java.security. public native Object[] getSigners ();
public Object[] getSigners () native void setSigners(Object[] signers);
{
return null;
}
public native Class getSuperclass (); public native Class getSuperclass ();
public native boolean isArray (); public native boolean isArray ();
......
...@@ -502,7 +502,7 @@ public abstract class ClassLoader ...@@ -502,7 +502,7 @@ public abstract class ClassLoader
*/ */
protected final void setSigners(Class c, Object[] signers) protected final void setSigners(Class c, Object[] signers)
{ {
// c.setSigners(signers); c.setSigners(signers);
} }
/** /**
......
...@@ -1534,6 +1534,18 @@ java::lang::Class::getProtectionDomain0 () ...@@ -1534,6 +1534,18 @@ java::lang::Class::getProtectionDomain0 ()
return protectionDomain; 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. // Functions for indirect dispatch (symbolic virtual binding) support.
// There are two tables, atable and otable. atable is an array of // There are two tables, atable and otable. atable is an array of
......
...@@ -539,6 +539,9 @@ _Jv_InitNewClassFields (jclass ret) ...@@ -539,6 +539,9 @@ _Jv_InitNewClassFields (jclass ret)
ret->field_count = 0; ret->field_count = 0;
ret->static_field_count = 0; ret->static_field_count = 0;
ret->vtable = NULL; ret->vtable = NULL;
ret->otable_syms = NULL;
ret->atable = NULL;
ret->atable_syms = NULL;
ret->interfaces = NULL; ret->interfaces = NULL;
ret->loader = NULL; ret->loader = NULL;
ret->interface_count = 0; ret->interface_count = 0;
...@@ -549,6 +552,7 @@ _Jv_InitNewClassFields (jclass ret) ...@@ -549,6 +552,7 @@ _Jv_InitNewClassFields (jclass ret)
ret->idt = NULL; ret->idt = NULL;
ret->arrayclass = NULL; ret->arrayclass = NULL;
ret->protectionDomain = NULL; ret->protectionDomain = NULL;
ret->signers = NULL;
ret->chain = NULL; ret->chain = NULL;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment