diff options
Diffstat (limited to 'libjava/java/lang/natClass.cc')
-rw-r--r-- | libjava/java/lang/natClass.cc | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc index 25e92c7..d7c2a54 100644 --- a/libjava/java/lang/natClass.cc +++ b/libjava/java/lang/natClass.cc @@ -72,7 +72,8 @@ static _Jv_Utf8Const *finit_leg_name = _Jv_makeUtf8Const ("$finit$", 7); jclass -java::lang::Class::forName (jstring className, java::lang::ClassLoader *loader) +java::lang::Class::forName (jstring className, jboolean initialize, + java::lang::ClassLoader *loader) { if (! className) throw new java::lang::NullPointerException; @@ -90,11 +91,12 @@ java::lang::Class::forName (jstring className, java::lang::ClassLoader *loader) ? _Jv_FindClassFromSignature (name->data, loader) : _Jv_FindClass (name, loader)); - if (klass) - _Jv_InitClass (klass); - else + if (klass == NULL) throw new java::lang::ClassNotFoundException (className); + if (initialize) + _Jv_InitClass (klass); + return klass; } @@ -102,7 +104,7 @@ jclass java::lang::Class::forName (jstring className) { // FIXME: should use class loader from calling method. - return forName (className, NULL); + return forName (className, true, NULL); } java::lang::reflect::Constructor * @@ -1415,3 +1417,10 @@ java::lang::Class::getPrivateMethod (jstring name, JArray<jclass> *param_types) } throw new java::lang::NoSuchMethodException; } + +// Private accessor method for Java code to retrieve the protection domain. +java::security::ProtectionDomain * +java::lang::Class::getProtectionDomain0 () +{ + return protectionDomain; +} |