JavaVM.st
changeset 399 94d37f2032a1
parent 398 4c070724503b
child 400 c7009660d0f8
--- a/JavaVM.st	Tue Oct 20 15:04:31 1998 +0000
+++ b/JavaVM.st	Tue Oct 20 16:45:42 1998 +0000
@@ -2489,9 +2489,20 @@
     name := nativeContext argAt:1.
     name := Java as_ST_String:name.
 
+    class := Java at:name.
+    class isNil ifTrue:[ 
 "/    ('JAVA: findSystemClass0 for ' , name , ' loader is ' , loader displayString) infoPrintCR.
-    loader class == (Java classForName:'java.util.SystemClassLoader') ifTrue:[
-        Java classForName:name.
+        loader class == (Java classForName:'java.util.SystemClassLoader') ifTrue:[
+"/            Java classForName:name.
+"/            class := Java at:name.
+            class := JavaClassReader loadSystemClass:name.
+        ] ifFalse:[
+            "/ load using default (ST/X) loader
+            class := JavaClassReader loadSystemClass:name.
+"/            JavaClassReader classLoaderQuerySignal answer:nil do:[
+"/                Java classForName:name.
+"/            ]
+        ].
     ].
 
 "/    JavaClassReader classLoaderQuerySignal answer:nil "loader"
@@ -2499,7 +2510,7 @@
 "/        class := Java classForName:name.
 "/        JavaClassReader postLoadActions:true.
 "/    ].
-    class := Java at:name.
+
     (class isNil 
     "or:[class classLoader notNil]") ifTrue:[
 "/        self halt:'class: ' , name , ' not found.'.
@@ -2507,7 +2518,7 @@
 
         self 
             throwExceptionClassName:'java.lang.ClassNotFoundException'
-            withMessage:'class: ' , name , ' not found.'.
+            withMessage:('class: ' , name , ' not found.').
         ^ nil
     ].
 
@@ -2516,7 +2527,7 @@
     ^ jClass
 
     "Created: / 5.1.1998 / 02:53:04 / cg"
-    "Modified: / 6.2.1998 / 02:16:50 / cg"
+    "Modified: / 20.10.1998 / 17:28:34 / cg"
 !
 
 _ClassLoader_getSystemResourceAsStream0:nativeContext
@@ -2558,7 +2569,7 @@
 _ClassLoader_resolveClass0:nativeContext
     "resolve a new class as previously created by defineClass0"
 
-    |jClassLoader jCls cls loaderStub|
+    |jClassLoader jCls cls loaderStub anyUnresolved|
 
     jClassLoader := nativeContext receiver.
     jCls := nativeContext argAt:1.
@@ -2571,20 +2582,24 @@
         self halt.
         ^ nil
     ].
-    Transcript showCR:('resolving class ' , cls fullName , ' ...').
+    ('JavaVM [info]: resolving class ' , cls fullName , ' ...') infoPrintCR.
+(cls fullName endsWith:'Clock2') ifTrue:[self halt].
 
     JavaClassReader classLoaderQuerySignal answer:jClassLoader 
     do:[
-        JavaClassReader postLoadActions:true.
+        JavaClassReader resolveClass:cls.
+"/        JavaClassReader postLoadActions:true.
+        anyUnresolved := false.
         cls constantPool do:[:entry |
             (entry isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
                 self halt:'debugHalt'.
                 entry preResolve.
                 self halt:'debugHalt'.
+                anyUnresolved := true.
             ]
         ]
     ].
-
+anyUnresolved ifTrue:[
     jClassLoader notNil ifTrue:[
         "/ any unresolved left -> try resolving with standard loader
         JavaClassReader classLoaderQuerySignal answer:nil 
@@ -2599,9 +2614,10 @@
             ]
         ]
     ].
+].
 
     "Created: / 7.1.1998 / 13:12:27 / cg"
-    "Modified: / 8.1.1998 / 16:13:57 / cg"
+    "Modified: / 20.10.1998 / 17:54:57 / cg"
 !
 
 _Class_forName:nativeContext
@@ -8057,6 +8073,6 @@
 !JavaVM class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaVM.st,v 1.45 1998/10/20 15:04:31 cg Exp $'
+    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaVM.st,v 1.46 1998/10/20 16:44:17 cg Exp $'
 ! !
 JavaVM initialize!