src/JavaClassReader.st
branchjk_new_structure
changeset 960 1c7fd32d1f26
parent 959 1f3342b2e728
child 984 7b6388093236
--- a/src/JavaClassReader.st	Wed Aug 31 22:30:01 2011 +0000
+++ b/src/JavaClassReader.st	Thu Sep 01 08:54:37 2011 +0000
@@ -217,14 +217,21 @@
      The classes string constants are resolved & <clinit> is called,
      if it implements it."
 
-    |rslt loader|
+    | loader|
+
+    (aClassName startsWith: $[) ifTrue:[self halt].
 
     loader := ClassLoaderQuerySignal query.
     loader isNil ifTrue:[
         ^ self loadSystemClass:aClassName
     ].
 
-    ^ loader loadClass:aClassName
+    ^loader isJavaObject ifTrue:[        
+        JavaVM classForJavaClassObject:
+            (loader perform: #'loadClass(Ljava/lang/String;)Ljava/lang/Class;' with: (Java as_String: aClassName))
+    ] ifFalse:[
+        loader loadClass:aClassName
+    ]
 
     "
      JavaClassReader loadClass:'awt/Component'
@@ -236,8 +243,9 @@
      JavaClassReader loadClass:'java/lang/Thread'
     "
 
-    "Created: / 15.4.1996 / 14:58:53 / cg"
-    "Modified: / 20.10.1998 / 17:24:54 / cg"
+    "Created: / 15-04-1996 / 14:58:53 / cg"
+    "Modified: / 20-10-1998 / 17:24:54 / cg"
+    "Modified: / 31-08-2011 / 21:29:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 loadClassLazy: internalJavaClassName 
@@ -2699,10 +2707,13 @@
      has no owner set and therefore access check will cause DNU.
      Ask JV for details."
 
+    "
     ^Java classForName: something javaClassName.
+    "
+    ^self class loadClass: something javaClassName.
 
     "Created: / 18-05-2011 / 14:55:32 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 22-05-2011 / 13:58:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 31-08-2011 / 21:25:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 updateOwnerInCPItem: each