Few fixes jk_new_structure
authorvranyj1
Thu, 01 Sep 2011 08:54:37 +0000
branchjk_new_structure
changeset 960 1c7fd32d1f26
parent 959 1f3342b2e728
child 961 fba8a36db660
Few fixes
src/JavaArray.st
src/JavaClassReader.st
src/JavaEvaluator.st
src/JavaResolver.st
src/JavaVM.st
src/Make.proto
src/bc.mak
src/extensions.st
src/libjava.rc
src/stx_libjava.st
--- a/src/JavaArray.st	Wed Aug 31 22:30:01 2011 +0000
+++ b/src/JavaArray.st	Thu Sep 01 08:54:37 2011 +0000
@@ -132,6 +132,11 @@
 !
 
 javaName
+
+    componentClass isJavaArrayClass ifTrue:[
+        ^'[' , componentClass javaName.
+    ].
+
     ^'[L' , componentClass javaName, ';'
 
     "Created: / 25-02-2011 / 19:29:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
--- 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 
--- a/src/JavaEvaluator.st	Wed Aug 31 22:30:01 2011 +0000
+++ b/src/JavaEvaluator.st	Thu Sep 01 08:54:37 2011 +0000
@@ -117,7 +117,7 @@
     shell := (Java classForName:'groovy.lang.GroovyShell') newCleared.
     shell perform: #'<init>(Lgroovy/lang/Binding;)V' with: binding.
     result := shell perform: #'evaluate(Ljava/lang/String;)Ljava/lang/Object;'
-                       with: (Java as_String: source).
+                       with: (Java as_String: (source isText ifTrue:[source string] ifFalse:[source])).
     ^result.
 
     "Created: / 17-08-2011 / 08:54:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
--- a/src/JavaResolver.st	Wed Aug 31 22:30:01 2011 +0000
+++ b/src/JavaResolver.st	Thu Sep 01 08:54:37 2011 +0000
@@ -284,14 +284,17 @@
     |arrayClass|
 
     aJavaClassRef isJavaArrayClassRef ifFalse:[ ^ aJavaClass ].
-    aJavaClassRef arrayDimensions timesRepeat:
-            [ arrayClass := aJavaClass.
-            arrayClass := arrayClass javaArrayClass. ].
+
+    arrayClass := aJavaClass.
+
+    aJavaClassRef arrayDimensions timesRepeat:[ 
+        arrayClass := arrayClass javaArrayClass. 
+    ].
     ^ arrayClass.
 
     "Created: / 08-04-2011 / 18:40:00 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 22-05-2011 / 17:48:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 23-05-2011 / 21:06:41 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 01-09-2011 / 09:25:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaResolver methodsFor:'common helpers'!
--- a/src/JavaVM.st	Wed Aug 31 22:30:01 2011 +0000
+++ b/src/JavaVM.st	Thu Sep 01 08:54:37 2011 +0000
@@ -4958,7 +4958,18 @@
 
     <javanative: 'java/lang/Class' name: 'getDeclaredClasses0'>
 
-    ^ UnimplementedNativeMethodSignal raise
+    | class innerPrefix inners |
+    class := self reflection classForJavaClassObject: nativeContext receiver.
+    innerPrefix := class name , '$'.                
+    inners := Set new.
+    JAVA allClassesDo:[:cls|
+        (cls name startsWith: innerPrefix) ifTrue:[
+            inners add: (self reflection javaClassObjectForClass: cls)
+        ].
+    ].
+    ^(Java at: 'java.lang.Class') javaArrayClass withAll: inners
+
+    "Modified: / 01-09-2011 / 00:09:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Class_getDeclaredConstructors0:aJavaContext 
@@ -4966,6 +4977,9 @@
     |class publicOnly constructors|
 
     class := self reflection classForJavaClassObject:(aJavaContext receiver).
+    (class isJavaPrimitiveType or:[class isJavaArrayClass]) ifTrue:[
+        ^ (self classForName:'java.lang.reflect.Constructor') javaArrayClass new:0
+    ].
     publicOnly := (aJavaContext argAt:1) == 1.
     constructors := OrderedCollection new.
     JavaClassReader classLoaderQuerySignal answer: class classLoader do:[
@@ -4983,7 +4997,7 @@
 
     "Created: / 24-11-2010 / 09:25:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 09-02-2011 / 01:24:03 / Marcel Hlopko <hlopik@gmail.com>"
-    "Modified: / 31-08-2011 / 22:20:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 01-09-2011 / 09:37:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Class_getDeclaredFields0:aJavaContext 
@@ -5018,6 +5032,9 @@
     class := self reflection classForJavaClassObject:(aJavaContext receiver).
     publicOnly := (aJavaContext argAt:1) == 1.
     methods := OrderedCollection new.
+    (class isJavaPrimitiveType or:[class isJavaArrayClass]) ifTrue:[
+        ^(self classForName:'java.lang.reflect.Method') javaArrayClass new:0
+    ].
     JavaClassReader classLoaderQuerySignal answer: class classLoader do:[
     class selectorsAndMethodsDo:
             [:selector :method | 
@@ -5033,7 +5050,7 @@
     "Created: / 21-12-2010 / 22:39:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-01-2011 / 15:19:09 / Marcel Hlopko <hlopik@gmail.com>"
     "Modified: / 04-06-2011 / 17:07:04 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 31-08-2011 / 22:05:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 01-09-2011 / 09:40:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Class_getDeclaringClass: nativeContext
@@ -14362,6 +14379,18 @@
     "Created: / 09-12-2010 / 17:29:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+_sun_misc_Unsafe_getLongVolatile: nativeContext
+
+    <javanative: 'sun/misc/Unsafe' name: 'getLongVolatile(Ljava/lang/Object;J)J'>
+
+    | o offset |
+    o := nativeContext argAt: 1.
+    offset := nativeContext argAt: 2.
+    ^o instVarAt: offset
+
+    "Modified: / 31-08-2011 / 23:57:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 _sun_misc_Unsafe_getObject: nativeContext
 
     <javanative: 'sun/misc/Unsafe' name: 'getObject'>
@@ -14756,10 +14785,15 @@
         |class|
 
     class := self reflection classForJavaClassObject:(aJavaContext argAt:1).
-    ^ class accessFlags
+    ^(class isJavaPrimitiveType or:[class isJavaArrayClass]) ifTrue:[
+        1041"FIXME: make it symbolic"
+    ] ifFalse:[
+        class accessFlags
+    ]
 
     "Created: / 26-11-2010 / 10:20:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-01-2011 / 15:19:28 / Marcel Hlopko <hlopik@gmail.com>"
+    "Modified: / 01-09-2011 / 09:46:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaVM class methodsFor:'queries'!
--- a/src/Make.proto	Wed Aug 31 22:30:01 2011 +0000
+++ b/src/Make.proto	Thu Sep 01 08:54:37 2011 +0000
@@ -202,7 +202,7 @@
 $(OUTDIR)JavaMethodDescriptor.$(O) JavaMethodDescriptor.$(H): JavaMethodDescriptor.st $(INCLUDE_TOP)/stx/libjava/JavaDescriptor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodNode.$(O) JavaMethodNode.$(H): JavaMethodNode.st $(INCLUDE_TOP)/stx/libjava/JavaNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodWithException.$(O) JavaMethodWithException.$(H): JavaMethodWithException.st $(INCLUDE_TOP)/stx/libjava/JavaMethod.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)JavaParser.$(O) JavaParser.$(H): JavaParser.st $(INCLUDE_TOP)/squeak/petitparser/PPCompositeParser.$(H) $(INCLUDE_TOP)/squeak/petitparser/PPDelegateParser.$(H) $(INCLUDE_TOP)/squeak/petitparser/PPParser.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PositionableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PeekableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(INCLUDE_TOP)/stx/libjava/PPJavaNode.$(H) $(STCHDR)
+$(OUTDIR)JavaParser.$(O) JavaParser.$(H): JavaParser.st $(INCLUDE_TOP)/squeak/petitparser/PPCompositeParser.$(H) $(INCLUDE_TOP)/squeak/petitparser/PPDelegateParser.$(H) $(INCLUDE_TOP)/squeak/petitparser/PPParser.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/PPJavaNode.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PositionableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PeekableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(STCHDR)
 $(OUTDIR)JavaSelectorParser.$(O) JavaSelectorParser.$(H): JavaSelectorParser.st $(INCLUDE_TOP)/stx/libjava/SelectorParser.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaStringBox.$(O) JavaStringBox.$(H): JavaStringBox.st $(INCLUDE_TOP)/stx/libjava/JavaTypeBox.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaStringRef2.$(O) JavaStringRef2.$(H): JavaStringRef2.st $(INCLUDE_TOP)/stx/libjava/JavaRef2.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/src/bc.mak	Wed Aug 31 22:30:01 2011 +0000
+++ b/src/bc.mak	Thu Sep 01 08:54:37 2011 +0000
@@ -149,7 +149,7 @@
 $(OUTDIR)JavaMethodDescriptor.$(O) JavaMethodDescriptor.$(H): JavaMethodDescriptor.st $(INCLUDE_TOP)\stx\libjava\JavaDescriptor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodNode.$(O) JavaMethodNode.$(H): JavaMethodNode.st $(INCLUDE_TOP)\stx\libjava\JavaNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodWithException.$(O) JavaMethodWithException.$(H): JavaMethodWithException.st $(INCLUDE_TOP)\stx\libjava\JavaMethod.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)JavaParser.$(O) JavaParser.$(H): JavaParser.st $(INCLUDE_TOP)\squeak\petitparser\PPCompositeParser.$(H) $(INCLUDE_TOP)\squeak\petitparser\PPDelegateParser.$(H) $(INCLUDE_TOP)\squeak\petitparser\PPParser.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PositionableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PeekableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(INCLUDE_TOP)\stx\libjava\PPJavaNode.$(H) $(STCHDR)
+$(OUTDIR)JavaParser.$(O) JavaParser.$(H): JavaParser.st $(INCLUDE_TOP)\squeak\petitparser\PPCompositeParser.$(H) $(INCLUDE_TOP)\squeak\petitparser\PPDelegateParser.$(H) $(INCLUDE_TOP)\squeak\petitparser\PPParser.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\PPJavaNode.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PositionableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PeekableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(STCHDR)
 $(OUTDIR)JavaSelectorParser.$(O) JavaSelectorParser.$(H): JavaSelectorParser.st $(INCLUDE_TOP)\stx\libjava\SelectorParser.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaStringBox.$(O) JavaStringBox.$(H): JavaStringBox.st $(INCLUDE_TOP)\stx\libjava\JavaTypeBox.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaStringRef2.$(O) JavaStringRef2.$(H): JavaStringRef2.st $(INCLUDE_TOP)\stx\libjava\JavaRef2.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/src/extensions.st	Wed Aug 31 22:30:01 2011 +0000
+++ b/src/extensions.st	Thu Sep 01 08:54:37 2011 +0000
@@ -215,9 +215,9 @@
 
 javaName
 
-    ^'[X'.
+    ^'[Z'.
 
-    "Modified: / 25-02-2011 / 19:03:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 31-08-2011 / 23:57:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 !ByteArray class methodsFor:'testing'!
 
--- a/src/libjava.rc	Wed Aug 31 22:30:01 2011 +0000
+++ b/src/libjava.rc	Thu Sep 01 08:54:37 2011 +0000
@@ -23,7 +23,7 @@
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011\nCopyright Jan Vrany, Jan Kurs and Marcel Hlopko\b          SWING Research Group, Czech Technical University In Prague\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.1.1\0"
-      VALUE "ProductDate", "Wed, 31 Aug 2011 21:07:05 GMT\0"
+      VALUE "ProductDate", "Thu, 01 Sep 2011 08:55:12 GMT\0"
     END
 
   END
--- a/src/stx_libjava.st	Wed Aug 31 22:30:01 2011 +0000
+++ b/src/stx_libjava.st	Thu Sep 01 08:54:37 2011 +0000
@@ -201,17 +201,17 @@
 
     ^ #(
         #'squeak:petitparser'    "PPParser - superclass of JavaParser::BlockParser "
-        #'stx:goodies/sunit'    "TestCase - superclass of SmalltalkSelectorParserTests "
+        #'stx:goodies/sunit'    "TestSuite - referenced by stx_libjava class>>testSuite "
         #'stx:libbasic'    "Object - superclass of JavaMethodWithHandler "
         #'stx:libbasic2'    "ZipArchive - referenced by Java class>>classSource:package:in: "
         #'stx:libbasic3'    "MessageTracer - referenced by JavaMethod>>setBreakPoint "
         #'stx:libcomp'    "ObjectFileLoader - referenced by JavaVM class>>_Runtime_loadFileInternalI: "
         #'stx:libhtml'    "URL - referenced by JavaEmbeddedFrameView>>setupAppletFrameIn:initializeJava: "
         #'stx:libtool'    "DebugView - referenced by Java class>>flushClasses "
-        #'stx:libview'    "DeviceGraphicsContext - superclass of JavaEmbeddedFrameView "
+        #'stx:libview'    "DisplaySurface - superclass of JavaView "
         #'stx:libview2'    "Plug - referenced by JavaSourceCodeCache>>findMethodLine:inMethods: "
         #'stx:libwidg'    "Label - referenced by JavaVM class>>processEvent: "
-        #'stx:libwidg2'    "ComboBoxView - referenced by JavaVM class>>processEvent: "
+        #'stx:libwidg2'    "MenuPanel - referenced by JavaVM class>>processEvent: "
     )
 ! !
 
@@ -296,8 +296,6 @@
         JavaTestsLoader
         (JavaTestsResource autoload)
         JavaTopView
-        JavaTypeBox
-        (JavaTypeBoxTests autoload)
         (JavaUTF8Tests autoload)
         JavaUnresolvedConstant
         JavaVM
@@ -307,7 +305,6 @@
         (LookupIntegrationTestsResource autoload)
         (LookupTests autoload)
         MessageDescription
-        NoOpTypeBox
         PPJavaNode
         SampleHandler
         SelectorParser
@@ -342,7 +339,6 @@
         JavaMethodWithException
         JavaParser
         JavaSelectorParser
-        JavaStringBox
         JavaStringRef2
         JavaTypeNode
         JavaUnhandledExceptionError
@@ -350,7 +346,6 @@
         JavaUnresolvedStringConstant
         JavadocDeclarationNode
         SmalltalkSelectorParser
-        VoidBox
         JavaArrayTypeNode
         JavaBooleanTypeNode
         JavaBothOldAndNewClassRef
@@ -513,7 +508,7 @@
     "Return a SVN revision number of myself.
      This number is updated after a commit"
 
-    ^ "$SVN-Revision:"'1303'"$"
+    ^ "$SVN-Revision:"'1304'"$"
 ! !
 
 !stx_libjava class methodsFor:'file generation'!