aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
authorBryce McKinlay <mckinlay@redhat.com>2006-05-17 15:09:57 +0000
committerBryce McKinlay <bryce@gcc.gnu.org>2006-05-17 16:09:57 +0100
commit5600ef7fb11fc4bcbb626dc52a7c6dbd95c40271 (patch)
tree4b1478e927e77a2c832d8513962880bd615b27b5 /libjava/java
parentc93c502529fb81ef96ecf90dcc19568227c5b4cb (diff)
downloadgcc-5600ef7fb11fc4bcbb626dc52a7c6dbd95c40271.zip
gcc-5600ef7fb11fc4bcbb626dc52a7c6dbd95c40271.tar.gz
gcc-5600ef7fb11fc4bcbb626dc52a7c6dbd95c40271.tar.bz2
re PR libgcj/27352 (SecurityManager.checkPermission() called unnecessarily)
PR libgcj/27352 * java/lang/Class.java (getClassLoaderInternal): New method. (forName (String, Class)): Use getClassLoaderInternal. (getPackage): Likewise. (getResource): Likewise. (getResourceAsStream): Likewise. (desiredAssertionStatus): Likewise. From-SVN: r113863
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/lang/Class.java23
1 files changed, 16 insertions, 7 deletions
diff --git a/libjava/java/lang/Class.java b/libjava/java/lang/Class.java
index 66b85c7..db2bf72 100644
--- a/libjava/java/lang/Class.java
+++ b/libjava/java/lang/Class.java
@@ -115,7 +115,7 @@ public final class Class implements Serializable
private static Class forName (String className, Class caller)
throws ClassNotFoundException
{
- return forName(className, true, caller.getClassLoader());
+ return forName(className, true, caller.getClassLoaderInternal());
}
@@ -192,10 +192,19 @@ public final class Class implements Serializable
* @see RuntimePermission
*/
public native ClassLoader getClassLoader ();
-
+
// A private internal method that is called by compiler-generated code.
private final native ClassLoader getClassLoader (Class caller);
-
+
+ /**
+ * Internal method that circumvents the usual security checks when
+ * getting the class loader.
+ */
+ private ClassLoader getClassLoaderInternal ()
+ {
+ return loader;
+ }
+
/**
* If this is an array, get the Class representing the type of array.
* Examples: "[[Ljava.lang.String;" would return "[Ljava.lang.String;", and
@@ -473,7 +482,7 @@ public final class Class implements Serializable
*/
public Package getPackage()
{
- ClassLoader cl = getClassLoader();
+ ClassLoader cl = getClassLoaderInternal();
if (cl != null)
return cl.getPackage(getPackagePortion(getName()));
else
@@ -616,7 +625,7 @@ public final class Class implements Serializable
public URL getResource(String resourceName)
{
String name = resourcePath(resourceName);
- ClassLoader loader = getClassLoader();
+ ClassLoader loader = getClassLoaderInternal();
if (loader == null)
return ClassLoader.getSystemResource(name);
return loader.getResource(name);
@@ -644,7 +653,7 @@ public final class Class implements Serializable
public InputStream getResourceAsStream(String resourceName)
{
String name = resourcePath(resourceName);
- ClassLoader loader = getClassLoader();
+ ClassLoader loader = getClassLoaderInternal();
if (loader == null)
return ClassLoader.getSystemResourceAsStream(name);
return loader.getResourceAsStream(name);
@@ -839,7 +848,7 @@ public final class Class implements Serializable
*/
public boolean desiredAssertionStatus()
{
- ClassLoader c = getClassLoader();
+ ClassLoader c = getClassLoaderInternal();
Object status;
if (c == null)
return VMClassLoader.defaultAssertionStatus();