src/JavaArray.st
branchjk_new_structure
changeset 1511 7bba867f71e3
parent 1481 28b926d3cdb5
child 1581 70fbc03d2d82
--- a/src/JavaArray.st	Thu Jul 05 18:48:34 2012 +0000
+++ b/src/JavaArray.st	Thu Jul 05 22:28:28 2012 +0000
@@ -175,24 +175,27 @@
 javaArrayClassFor: aJavaClass 
     | meta  cls |
 
-    meta := Metaclass new.
-    meta setSuperclass: JavaArray class.
-    meta instSize: JavaArray class instSize.
-    cls := meta new.
-    cls setSuperclass: JavaArray.
-    cls flags: JavaArray flags.
-    cls instSize: JavaArray instSize.
-    cls setComponentClass: aJavaClass.
-    cls setName: (aJavaClass name , '[]') asSymbol.
-     "Kludge, spec says" "All methods of class Object may be invoked on an array."
-    cls setMethodDictionary: (JavaVM classForName: 'java.lang.Object') 
-                methodDictionary.
-    ^ cls
+    ^JavaVM arrayClassFor: aJavaClass ifAbsentPut:[
+        meta := Metaclass new.
+        meta setSuperclass: JavaArray class.
+        meta instSize: JavaArray class instSize.
+        cls := meta new.
+        cls setSuperclass: JavaArray.
+        cls flags: JavaArray flags.
+        cls instSize: JavaArray instSize.
+        cls setComponentClass: aJavaClass.
+        cls setName: (aJavaClass name , '[]') asSymbol.
+         "Kludge, spec says" "All methods of class Object may be invoked on an array."
+        cls setMethodDictionary: (JavaVM classForName: 'java.lang.Object') 
+                    methodDictionary.
+        cls
+    ]
+    "
+        JavaArray javaArrayClassFor: Object
+    "
 
-    "
-        JavaArray javaArrayClassFor: Object"
     "Created: / 17-12-2010 / 13:45:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 01-03-2011 / 14:55:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 05-07-2012 / 23:23:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaArray class methodsFor:'queries'!