Index: vm/reference/java/lang/VMClass.java
===================================================================
RCS file: /sources/classpath/classpath/vm/reference/java/lang/VMClass.java,v
retrieving revision 1.20
diff -u -r1.20 VMClass.java
--- vm/reference/java/lang/VMClass.java	18 Sep 2007 21:52:38 -0000	1.20
+++ vm/reference/java/lang/VMClass.java	19 Apr 2008 15:19:00 -0000
@@ -296,27 +296,43 @@
    */
   static String getSimpleName(Class klass)
   {
+    int arrayCount = 0;
+    while (klass.isArray())
+      {
+        klass = klass.getComponentType();
+        ++arrayCount;
+      }
+    // now klass is the component type
+    
+    String simpleComponentName = null;
     if (isAnonymousClass(klass))
-      return "";
-    if (isArray(klass))
       {
-	return getComponentType(klass).getSimpleName() + "[]";
+        simpleComponentName = "";
       }
-    String fullName = getName(klass);
-    int pos = fullName.lastIndexOf("$");
-    if (pos == -1)
-      pos = 0;
     else
       {
-	++pos;
-	while (Character.isDigit(fullName.charAt(pos)))
-	  ++pos;
+        String fullName = getName(klass);
+        int pos = fullName.lastIndexOf("$");
+        if (pos != -1) 
+          { //inner class or local class
+            // skip digits of local classes
+            while (Character.isDigit(fullName.charAt(pos+1)))
+              pos++;
+          } 
+        else 
+          {
+            pos = fullName.lastIndexOf(".");
+          }
+        simpleComponentName = fullName.substring(pos+1);
       }
-    int packagePos = fullName.lastIndexOf(".", pos);
-    if (packagePos == -1)
-      return fullName.substring(pos);
-    else
-      return fullName.substring(packagePos + 1);
+    
+    if (arrayCount == 0)
+      return simpleComponentName;
+    
+    StringBuffer sb = new StringBuffer(simpleComponentName);
+    while (arrayCount-- > 0)
+      sb.append("[]");
+    return sb.toString();        
   }
 
   /**