JavaClassRegistry.st
branchbuiltin-class-support
changeset 2618 e7757e5d593c
parent 2578 fc6186a4961f
child 2620 263045d15796
--- a/JavaClassRegistry.st	Wed May 22 00:27:53 2013 +0100
+++ b/JavaClassRegistry.st	Wed May 22 21:15:02 2013 +0100
@@ -301,6 +301,26 @@
 
 !JavaClassRegistry methodsFor:'registering'!
 
+registerBuiltIn: class
+    | nm |
+
+    nm := class name.
+    nm == #'java.lang.Object' ifTrue:[
+        java_lang_Object := class.
+        ^self.
+    ].
+    nm == #'java.lang.System' ifTrue:[
+        java_lang_System := class.
+        ^self.
+    ].
+    nm == #'java.lang.Class' ifTrue:[
+        java_lang_Class := class.
+        ^self.
+    ].
+
+    "Created: / 22-05-2013 / 20:40:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 registerClass: newClass
     | classes oldClass |
 
@@ -338,11 +358,15 @@
         classes := loaders at: newClass classLoader put: Dictionary new.
     ].
     classes at: newClass name  put: newClass.
+    newClass isBuiltInClass ifTrue:[
+        self assert: newClass classLoader isNil. "/must be loaded by primordial CL...
+        self registerBuiltIn: newClass.
+    ].
     self registerClassInSmalltalk: newClass notify: true.
 
     "Created: / 23-10-2011 / 11:53:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 02-11-2011 / 18:40:52 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 08-02-2013 / 00:54:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-05-2013 / 20:40:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 registerClassInSmalltalk: javaclass notify: doNotify
@@ -412,6 +436,7 @@
     | classes |
 
     self assert: (oldClass name includes: $.) not.
+    self assert: (oldClass isBuiltInClass not).
     self unregisterClassInSmalltalk: oldClass notify: true.
     classes := loaders at: oldClass classLoader ifAbsent: nil.
     classes notNil ifTrue:[
@@ -419,6 +444,7 @@
     ].
 
     "Created: / 04-04-2012 / 02:43:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-05-2013 / 20:41:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 unregisterClassInSmalltalk: javaclass notify: doNotify