src/JavaClassReader.st
branchjk_new_structure
changeset 1058 1db06119bf3e
parent 1055 d89af7610ed3
child 1059 22fe06c9e367
--- a/src/JavaClassReader.st	Fri Oct 28 18:58:45 2011 +0000
+++ b/src/JavaClassReader.st	Fri Oct 28 20:15:40 2011 +0000
@@ -244,10 +244,7 @@
                 classPath: Java release classPath.
     class notNil ifTrue:[ ^ class ].
 
-    class := self
-                readClass: className ignoring: classesBeingLoadedOrNil 
-                classPath: Java classPath.
-    class notNil ifTrue:[
+    class isNil ifTrue:[
         JavaVM booted ifFalse:[
             self breakPoint:#jv info: 'Should not happen!!'.
         ].
@@ -255,7 +252,14 @@
         (scl := java_lang_ClassLoader instVarNamed:#scl) isNil ifTrue:[
             scl := java_lang_ClassLoader perform: #'getSystemClassLoader()Ljava/lang/ClassLoader;'
         ].
-        class classLoader: scl.        
+        JavaClassReader classLoaderQuerySignal answer: scl do:[
+            class := self
+                readClass: className ignoring: classesBeingLoadedOrNil 
+                classPath: Java classPath.
+        ].
+        class notNil ifTrue:[
+            self assert: class classLoader == scl.
+        ].
     ].
 
     ^class
@@ -263,7 +267,7 @@
     "Created: / 15-04-1996 / 14:58:53 / cg"
     "Modified: / 20-10-1998 / 17:24:54 / cg"
     "Modified: / 21-10-2011 / 13:39:14 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 23-10-2011 / 22:07:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-10-2011 / 21:56:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 readClass: className ignoring: classesBeingLoadedOrNil classPath: classPath 
@@ -612,6 +616,7 @@
     ] ifFalse: [
         "/ a java class
         classBeingLoaded := JavaClass fullName: thisClassName numStatic: nStatic.
+        classBeingLoaded classLoader: self class classLoaderQuerySignal query.        
         fields := fields select: [:f | f isStatic not ].
         JavaClass setInstanceVariableStringFromFields: staticFields
             in: classBeingLoaded class.
@@ -636,7 +641,7 @@
     
     classBeingLoaded fields do: [:each | self updateOwnerInField: each ].
     classBeingLoaded staticFields do: [:each | self updateOwnerInField: each ].    
-    JavaVM classRegistry registerClass: classBeingLoaded.
+    "/JavaVM classRegistry registerClass: classBeingLoaded.
     classesbeingLoaded remove: classBeingLoaded name ifAbsent:[].
     ^ classBeingLoaded.
 
@@ -654,7 +659,7 @@
     "Modified: / 15-10-2010 / 17:37:38 / Jan Kurs <kurs.jan@post.cz>"
     "Modified: / 28-01-2011 / 15:09:48 / Marcel Hlopko <hlopik@gmail.com>"
     "Modified: / 18-05-2011 / 15:30:29 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 23-10-2011 / 15:23:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-10-2011 / 21:58:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 readStream:aStream ignoring:classesBeingLoaded