diff options
| author | Jeroen Frijters <jeroen@sumatra.nl> | 2006-08-17 07:43:55 +0000 |
|---|---|---|
| committer | Jeroen Frijters <jeroen@sumatra.nl> | 2006-08-17 07:43:55 +0000 |
| commit | 8aca770e8d35da673d8eb49f99ed69d9e4077aca (patch) | |
| tree | 3c06eb2998e4ce5973b4ba6643c0028eff458389 /vm/reference/gnu | |
| parent | 675e898a0056c41ccfc58afb5a2fa8eb6f680745 (diff) | |
| download | classpath-8aca770e8d35da673d8eb49f99ed69d9e4077aca.tar.gz | |
2006-08-17 Jeroen Frijters <jeroen@frijters.net>
* gnu/java/rmi/server/RMIClassLoaderImpl.java
(loadClass): Rewritten to use getClassLoader.
(loadProxyClass): Implemented.
(getClassLoader): Fixed support for null or empty codebase.
* gnu/java/rmi/server/RMIObjectInputStream.java
(resolveClass): Use user class loader as default class loader.
(resolveProxyClass): Delegate to RMIClassLoader.loadProxyClass.
* gnu/javax/rmi/CORBA/UtilDelegateImpl.java
(loadClass): Simplified and use user class loader instead of
context class loader as default.
* java/io/ObjectInputStream.java
(currentLoader): Use VMStackWalker.firstNonNullClassLoader().
* vm/reference/gnu/classpath/VMStackWalker.java
(firstNonNullClassLoader): New method.
* vm/reference/java/io/VMObjectInputStream.java
(loaderAction, currentClassLoader): Removed.
Diffstat (limited to 'vm/reference/gnu')
| -rw-r--r-- | vm/reference/gnu/classpath/VMStackWalker.java | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/vm/reference/gnu/classpath/VMStackWalker.java b/vm/reference/gnu/classpath/VMStackWalker.java index e995c4634..2214e7571 100644 --- a/vm/reference/gnu/classpath/VMStackWalker.java +++ b/vm/reference/gnu/classpath/VMStackWalker.java @@ -1,5 +1,5 @@ /* VMStackWalker.java -- Reference implementation of VM hooks for stack access - Copyright (C) 2005 Free Software Foundation + Copyright (C) 2005, 2006 Free Software Foundation This file is part of GNU Classpath. @@ -112,5 +112,20 @@ public final class VMStackWalker * is here to work around access permissions. */ public static native ClassLoader getClassLoader(Class cl); -} + /** + * Walk up the stack and return the first non-null class loader. + * If there aren't any non-null class loaders on the stack, return null. + */ + public static ClassLoader firstNonNullClassLoader() + { + Class[] stack = getClassContext(); + for (int i = 0; i < stack.length; i++) + { + ClassLoader loader = getClassLoader(stack[i]); + if (loader != null) + return loader; + } + return null; + } +} |
