JavaClass memory optimization (part 4)
authorJan Vrany <jan.vrany@fit.cvut.cz>
Sun, 07 Dec 2014 02:16:08 +0000
changeset 3293 14292924cac7
parent 3292 10163a452c54
child 3294 1013708261a8
JavaClass memory optimization (part 4) Moved seldomly used slots to attributes in order to reduce JavaClass memory footprint in common case. Namely, following slots were removed: `sourceString`, `protectionDomain`, `signatureJ` and `versions`.
JavaClass.st
JavaClassReader.st
Make.proto
Make.spec
abbrev.stc
bc.mak
bmake.bat
libjava.rc
stx_libjava.st
--- a/JavaClass.st	Sun Dec 07 01:25:54 2014 +0000
+++ b/JavaClass.st	Sun Dec 07 02:16:08 2014 +0000
@@ -21,14 +21,13 @@
 "{ Package: 'stx:libjava' }"
 
 JavaBehavior subclass:#JavaClass
-	instanceVariableNames:'classLoader binaryName sourceString fields
-		staticFields annotations protectionDomain signatureJ versions'
+	instanceVariableNames:'classLoader binaryName fields staticFields annotations'
 	classVariableNames:'ArgumentConversionErrorSignal OrderOfClassInits'
 	poolDictionaries:'JavaConstants'
 	category:'Languages-Java-Classes'
 !
 
-Array variableSubclass:#Attributes
+MethodDictionary variableSubclass:#Attributes
 	instanceVariableNames:''
 	classVariableNames:'Empty'
 	poolDictionaries:''
@@ -892,11 +891,15 @@
 !
 
 protectionDomain
-    ^ protectionDomain
+    ^ attributes at: #ProtectionDomain ifAbsent:[ nil ]
+
+    "Modified: / 07-12-2014 / 01:39:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 protectionDomain:something
-    protectionDomain := something.
+    attributes  := attributes at: #ProtectionDomain putOrAppend: something
+
+    "Modified: / 07-12-2014 / 01:40:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 runtimeVisibleAnnotationsAsBytesOrNil
@@ -913,24 +916,24 @@
 !
 
 setSignature: aSymbol
-
-    signatureJ := aSymbol
+    attributes := attributes at: #GenericSignature putOrAppend: aSymbol.
 
     "Created: / 13-08-2011 / 00:30:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-12-2014 / 01:39:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 signatureJ
-
     "stupid naming, but superclass defines signature too"
 
-    ^signatureJ
+    ^ attributes at: #GenericSignature ifAbsent:[ nil ]
 
     "Created: / 13-08-2011 / 00:30:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-12-2014 / 01:39:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 source
-    | stream |
-    sourceString notNil ifTrue: [ ^ sourceString ].
+    | sourceString stream |
+    (sourceString := self sourceString) notNil ifTrue: [ ^ sourceString ].
     ^ [
         stream := self sourceStream.
         stream notNil ifTrue:[
@@ -949,7 +952,7 @@
     "
 
     "Modified: / 30-07-1997 / 14:31:01 / cg"
-    "Modified: / 28-09-2013 / 01:44:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-12-2014 / 01:32:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 sourceFile
@@ -959,7 +962,8 @@
 !
 
 sourceStream
-    ^ sourceString notNil
+    | sourceString |
+    ^ (sourceString := self sourceString) notNil
         ifTrue:[ sourceString readStream ]
         ifFalse:[Java classSourceStreamFor: self ]
 
@@ -970,12 +974,14 @@
     "
 
     "Created: / 19-09-2013 / 12:41:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-12-2014 / 01:32:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 sourceString
-    ^sourceString
+    ^attributes at: #SourceString ifAbsent: [ nil ]
 
     "Created: / 19-04-2013 / 09:28:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-12-2014 / 01:32:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 staticFields
@@ -1052,9 +1058,10 @@
         the version die
     "
 
-    ^ versions.
+    ^ attributes at: #Versions ifAbsent: [ nil ]
 
     "Created: / 14-04-2013 / 12:10:54 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+    "Modified: / 07-12-2014 / 01:36:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 versions: aWeakArray
@@ -1062,16 +1069,20 @@
     set this class' versions. It is expected that all versions of the
     class will share the same weak array instance.
     "
-    versions := aWeakArray.
+    attributes :=attributes at:#Versions putOrAppend: aWeakArray.
 
     "Created: / 14-04-2013 / 12:28:09 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+    "Modified: / 07-12-2014 / 01:36:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 versionsArray
-
-    versions isNil ifTrue: [ ^ Array with: self ] ifFalse: [ ^ self versions ].
+    | versions |
+
+    versions := self versions.
+    ^ versions isNil ifTrue: [ Array with: self ] ifFalse: [ versions ].
 
     "Created: / 08-10-2013 / 18:38:52 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+    "Modified: / 07-12-2014 / 01:37:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaClass methodsFor:'accessing - java'!
@@ -1551,7 +1562,7 @@
             "/ check carefully - maybe, my source does not really come from that
             "/ file (i.e. all of my methods have their source as string)
 
-            anySourceRef := sourceString isNil.
+            anySourceRef := self sourceString isNil.
 
             anySourceRef ifTrue:[
                 s := self sourceStream.
@@ -1629,6 +1640,7 @@
     ].
 
     "Created: / 08-08-2014 / 21:41:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-12-2014 / 01:33:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 fileOutInto: directory
@@ -1882,7 +1894,7 @@
     RETURN ( ___new(self) );
 %}.
 
-    "Modified: / 08-08-2014 / 09:57:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-12-2014 / 02:11:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 initValueFor:instVarName
@@ -2368,11 +2380,13 @@
         aSequenceableCollection class == Attributes ifTrue:[
             attributes := aSequenceableCollection
         ] ifFalse:[
-            attributes := Attributes withAll: aSequenceableCollection.
+            attributes := Attributes new: aSequenceableCollection size // 2.
+            aSequenceableCollection pairWiseDo:[ :key :value | attributes at: key put: value. ]
         ]
     ]
 
     "Created: / 13-09-2013 / 00:57:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-12-2014 / 01:57:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 setBinaryName: aString
@@ -2441,11 +2455,11 @@
 
 setSource: aStringOrNil
     self assert: (aStringOrNil isNil or:[aStringOrNil isString]).
-    sourceString := aStringOrNil
+    attributes := attributes at:#SourceString putOrAppend: aStringOrNil
 
     "Created: / 15-04-1996 / 16:42:52 / cg"
     "Created: / 18-02-2012 / 19:10:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 19-04-2013 / 09:30:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-12-2014 / 01:34:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 setSourceFile:aFilename
@@ -3312,12 +3326,12 @@
     aJavaClass markMultipleVersions.
 
     (self versions isNil and: [ aJavaClass versions isNil ]) ifTrue: [
-        |versions|
-
-        versions := WeakArray with: self with: aJavaClass.
-        versions addDependent: JavaClass::JavaClassVersionDiedHandler new.
-        self versions: versions.
-        aJavaClass versions: versions.
+        | versionsArray |
+
+        versionsArray := WeakArray with: self with: aJavaClass.
+        versionsArray addDependent: JavaClass::JavaClassVersionDiedHandler new.
+        self versions: versionsArray.
+        aJavaClass versions: versionsArray.
         ^ self.
     ].
     self versions isNil ifTrue: [
@@ -3334,7 +3348,7 @@
 
     "Created: / 14-04-2013 / 13:44:03 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
     "Modified: / 02-10-2013 / 21:52:39 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-    "Modified (format): / 16-08-2014 / 15:10:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 07-12-2014 / 01:30:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaClass::Attributes class methodsFor:'accessing'!
@@ -3376,26 +3390,6 @@
     "Modified: / 13-09-2013 / 00:51:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!JavaClass::Attributes methodsFor:'accessing'!
-
-at: name
-    ^ self at: name ifAbsent: [ self keyNotFoundError: 'No such key: ', name printString   ]
-
-    "Created: / 13-09-2013 / 00:31:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 04-08-2014 / 22:29:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-at: name ifAbsent: block
-    1 to: self size by: 2 do:[:i|
-        (self basicAt: i) == name ifTrue:[
-            ^ self basicAt: i + 1.
-        ]
-    ].
-    ^ block value
-
-    "Created: / 04-08-2014 / 22:28:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
 !JavaClass::JavaClassVersionDiedHandler class methodsFor:'documentation'!
 
 history
--- a/JavaClassReader.st	Sun Dec 07 01:25:54 2014 +0000
+++ b/JavaClassReader.st	Sun Dec 07 02:16:08 2014 +0000
@@ -1252,9 +1252,13 @@
     signature_index := inStream nextUnsignedShortMSB:msb.
     signature := self constantPoolAt:signature_index.
 
-    something setSignature: signature.
-
-    "Modified: / 13-08-2011 / 00:28:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    something isJavaClass ifTrue:[
+        attributes add: #GenericSignature; add: signature
+    ] ifFalse:[
+        something setSignature: signature.
+    ].
+
+    "Modified: / 07-12-2014 / 01:43:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 readSourceDebugExtensionAttributeFor:something
--- a/Make.proto	Sun Dec 07 01:25:54 2014 +0000
+++ b/Make.proto	Sun Dec 07 02:16:08 2014 +0000
@@ -205,7 +205,6 @@
 $(OUTDIR)JavaNioSupport.$(O) JavaNioSupport.$(H): JavaNioSupport.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaObject.$(O) JavaObject.$(H): JavaObject.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaObjectDictionary.$(O) JavaObjectDictionary.$(H): JavaObjectDictionary.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)JavaPackage.$(O) JavaPackage.$(H): JavaPackage.st $(INCLUDE_TOP)/stx/libbasic/NameSpace.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaPopUpView.$(O) JavaPopUpView.$(H): JavaPopUpView.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/PopUpView.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/TopView.$(H) $(INCLUDE_TOP)/stx/libview/View.$(H) $(STCHDR)
 $(OUTDIR)JavaProcess.$(O) JavaProcess.$(H): JavaProcess.st $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/Process.$(H) $(STCHDR)
 $(OUTDIR)JavaRef2.$(O) JavaRef2.$(H): JavaRef2.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -276,7 +275,7 @@
 $(OUTDIR)JavaAlienMirror.$(O) JavaAlienMirror.$(H): JavaAlienMirror.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/JavaMirror.$(H) $(INCLUDE_TOP)/stx/libjava/JavaVMData.$(H) $(STCHDR)
 $(OUTDIR)JavaArrayMirror.$(O) JavaArrayMirror.$(H): JavaArrayMirror.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/JavaMirror.$(H) $(INCLUDE_TOP)/stx/libjava/JavaVMData.$(H) $(STCHDR)
 $(OUTDIR)JavaByteCodePreresolver.$(O) JavaByteCodePreresolver.$(H): JavaByteCodePreresolver.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)/stx/libjava/JavaByteCodeProcessorAdapter.$(H) $(STCHDR)
-$(OUTDIR)JavaClass.$(O) JavaClass.$(H): JavaClass.st $(INCLUDE_TOP)/stx/libbasic/Array.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Class.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libjava/JavaBehavior.$(H) $(INCLUDE_TOP)/stx/libjava/JavaConstants.$(H) $(STCHDR)
+$(OUTDIR)JavaClass.$(O) JavaClass.$(H): JavaClass.st $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Class.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/KeyedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/MethodDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/JavaBehavior.$(H) $(INCLUDE_TOP)/stx/libjava/JavaConstants.$(H) $(STCHDR)
 $(OUTDIR)JavaClassMirror.$(O) JavaClassMirror.$(H): JavaClassMirror.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/JavaMirror.$(H) $(INCLUDE_TOP)/stx/libjava/JavaVMData.$(H) $(STCHDR)
 $(OUTDIR)JavaClassPathBundle.$(O) JavaClassPathBundle.$(H): JavaClassPathBundle.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/JavaCodeBundle.$(H) $(INCLUDE_TOP)/stx/libjava/JavaCodeLibraryOrBundle.$(H) $(STCHDR)
 $(OUTDIR)JavaFieldRef2.$(O) JavaFieldRef2.$(H): JavaFieldRef2.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/JavaClassMemberRef2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaConstants.$(H) $(INCLUDE_TOP)/stx/libjava/JavaRef2.$(H) $(STCHDR)
--- a/Make.spec	Sun Dec 07 01:25:54 2014 +0000
+++ b/Make.spec	Sun Dec 07 02:16:08 2014 +0000
@@ -42,6 +42,7 @@
 #  -warnNonStandard : no warnings about ST/X extensions
 #  -warnEOLComments : no warnings about EOL comment extension
 #  -warnPrivacy     : no warnings about privateClass extension
+#  -warnUnused      : no warnings about unused variables
 #
 # ********** OPTIONAL: MODIFY the next line(s) ***
 # STCWARNINGS=-warn
--- a/abbrev.stc	Sun Dec 07 01:25:54 2014 +0000
+++ b/abbrev.stc	Sun Dec 07 02:16:08 2014 +0000
@@ -44,7 +44,6 @@
 JavaNioSupport JavaNioSupport stx:libjava 'Languages-Java-Support-Native' 0
 JavaObject JavaObject stx:libjava 'Languages-Java-Classes' 0
 JavaObjectDictionary JavaObjectDictionary stx:libjava 'Languages-Java-Support' 0
-JavaPackage JavaPackage stx:libjava 'Languages-Java-Support' 0
 JavaPopUpView JavaPopUpView stx:libjava 'Languages-Java-Views-Support' 2
 JavaProcess JavaProcess stx:libjava 'Languages-Java-Classes' 0
 JavaRef2 JavaRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
@@ -142,10 +141,12 @@
 ProxyMethodJavaTypeCheckNode ProxyMethodJavaTypeCheckNode stx:libjava 'Languages-Java-Interop' 0
 JavaNativeMethod JavaNativeMethod stx:libjava 'Languages-Java-Classes' 0
 JavaNativeMethodImpl_OracleJDK8 JavaNativeMethodImpl_OracleJDK8 stx:libjava 'Languages-Java-Support-Java 8' 0
+JavaTestCaseProxy JavaTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
+JavaRefsAndConstantPoolTestCase JavaRefsAndConstantPoolTestCase stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 GroovyEvaluatorTests GroovyEvaluatorTests stx:libjava 'Languages-Groovy-Tests' 1
 JUnitTestCaseProxy JUnitTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
+JavaByteCodeProcessorTests JavaByteCodeProcessorTests stx:libjava 'Languages-Java-Tests' 1
 JavaByteCodeDisassemblerTests JavaByteCodeDisassemblerTests stx:libjava 'Languages-Java-Tests' 1
-JavaByteCodeProcessorTests JavaByteCodeProcessorTests stx:libjava 'Languages-Java-Tests' 1
 JavaClassLoadingTests JavaClassLoadingTests stx:libjava 'Languages-Java-Tests-ClassLoading' 1
 JavaClassReaderTests JavaClassReaderTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaClassRefTests JavaClassRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
@@ -161,10 +162,8 @@
 JavaMonitorsTests JavaMonitorsTests stx:libjava 'Languages-Java-Tests' 1
 JavaNativeMemoryTests JavaNativeMemoryTests stx:libjava 'Languages-Java-Tests' 1
 JavaRefMock JavaRefMock stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 0
-JavaRefsAndConstantPoolTestCase JavaRefsAndConstantPoolTestCase stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaReleaseTests JavaReleaseTests stx:libjava 'Languages-Java-Tests' 1
 JavaRuntimeConstantPoolTests JavaRuntimeConstantPoolTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
-JavaTestCaseProxy JavaTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
 JavaTestsResource JavaTestsResource stx:libjava 'Languages-Java-Tests' 2
 JavaThreadingTests JavaThreadingTests stx:libjava 'Languages-Java-Tests' 1
 JavaUTF8Tests JavaUTF8Tests stx:libjava 'Languages-Java-Tests' 1
--- a/bc.mak	Sun Dec 07 01:25:54 2014 +0000
+++ b/bc.mak	Sun Dec 07 02:16:08 2014 +0000
@@ -30,6 +30,7 @@
 !INCLUDE Make.spec
 
 LIBNAME=libstx_libjava
+MODULE_PATH=libjava
 RESFILES=libjava.$(RES)
 
 
@@ -138,7 +139,6 @@
 $(OUTDIR)JavaNioSupport.$(O) JavaNioSupport.$(H): JavaNioSupport.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaObject.$(O) JavaObject.$(H): JavaObject.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaObjectDictionary.$(O) JavaObjectDictionary.$(H): JavaObjectDictionary.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)JavaPackage.$(O) JavaPackage.$(H): JavaPackage.st $(INCLUDE_TOP)\stx\libbasic\NameSpace.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaPopUpView.$(O) JavaPopUpView.$(H): JavaPopUpView.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\PopUpView.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\TopView.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(STCHDR)
 $(OUTDIR)JavaProcess.$(O) JavaProcess.$(H): JavaProcess.st $(INCLUDE_TOP)\stx\libbasic\Link.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\Process.$(H) $(STCHDR)
 $(OUTDIR)JavaRef2.$(O) JavaRef2.$(H): JavaRef2.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -209,7 +209,7 @@
 $(OUTDIR)JavaAlienMirror.$(O) JavaAlienMirror.$(H): JavaAlienMirror.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\JavaMirror.$(H) $(INCLUDE_TOP)\stx\libjava\JavaVMData.$(H) $(STCHDR)
 $(OUTDIR)JavaArrayMirror.$(O) JavaArrayMirror.$(H): JavaArrayMirror.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\JavaMirror.$(H) $(INCLUDE_TOP)\stx\libjava\JavaVMData.$(H) $(STCHDR)
 $(OUTDIR)JavaByteCodePreresolver.$(O) JavaByteCodePreresolver.$(H): JavaByteCodePreresolver.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)\stx\libjava\JavaByteCodeProcessorAdapter.$(H) $(STCHDR)
-$(OUTDIR)JavaClass.$(O) JavaClass.$(H): JavaClass.st $(INCLUDE_TOP)\stx\libbasic\Array.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Class.$(H) $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libjava\JavaBehavior.$(H) $(INCLUDE_TOP)\stx\libjava\JavaConstants.$(H) $(STCHDR)
+$(OUTDIR)JavaClass.$(O) JavaClass.$(H): JavaClass.st $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Class.$(H) $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\KeyedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\MethodDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\JavaBehavior.$(H) $(INCLUDE_TOP)\stx\libjava\JavaConstants.$(H) $(STCHDR)
 $(OUTDIR)JavaClassMirror.$(O) JavaClassMirror.$(H): JavaClassMirror.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\JavaMirror.$(H) $(INCLUDE_TOP)\stx\libjava\JavaVMData.$(H) $(STCHDR)
 $(OUTDIR)JavaClassPathBundle.$(O) JavaClassPathBundle.$(H): JavaClassPathBundle.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\JavaCodeBundle.$(H) $(INCLUDE_TOP)\stx\libjava\JavaCodeLibraryOrBundle.$(H) $(STCHDR)
 $(OUTDIR)JavaFieldRef2.$(O) JavaFieldRef2.$(H): JavaFieldRef2.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\JavaClassMemberRef2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaConstants.$(H) $(INCLUDE_TOP)\stx\libjava\JavaRef2.$(H) $(STCHDR)
--- a/bmake.bat	Sun Dec 07 01:25:54 2014 +0000
+++ b/bmake.bat	Sun Dec 07 02:16:08 2014 +0000
@@ -9,6 +9,8 @@
 @IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
 make.exe -N -f bc.mak  %DEFINES% %*
 
+@IF "%1" EQU "exe" GOTO finish
+
 @echo "***********************************"
 @echo "Buildung stx/libjava/experiments
 @echo "***********************************"
@@ -24,3 +26,5 @@
 @cd ..
 
 
+
+:finish
--- a/libjava.rc	Sun Dec 07 01:25:54 2014 +0000
+++ b/libjava.rc	Sun Dec 07 02:16:08 2014 +0000
@@ -3,8 +3,8 @@
 // automagically generated from the projectDefinition: stx_libjava.
 //
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION     6,2,26747,26747
-  PRODUCTVERSION  6,2,4,0
+  FILEVERSION     6,2,32767,32767
+  PRODUCTVERSION  6,2,5,0
 #if (__BORLANDC__)
   FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
   FILEFLAGS       VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
@@ -20,12 +20,12 @@
     BEGIN
       VALUE "CompanyName", "eXept Software AG & SWING Research Group\0"
       VALUE "FileDescription", "Java support for Smalltalk/X (LIB)\0"
-      VALUE "FileVersion", "6.2.26747.26747\0"
+      VALUE "FileVersion", "6.2.32767.32767\0"
       VALUE "InternalName", "stx:libjava\0"
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011\nCopyright Jan Vrany, Jan Kurs and Marcel Hlopko\n          SWING Research Group, Czech Technical University In Prague\0"
       VALUE "ProductName", "Smalltalk/X\0"
-      VALUE "ProductVersion", "6.2.4.0\0"
-      VALUE "ProductDate", "Sat, 11 Oct 2014 22:19:43 GMT\0"
+      VALUE "ProductVersion", "6.2.5.0\0"
+      VALUE "ProductDate", "Sun, 07 Dec 2014 02:13:35 GMT\0"
     END
 
   END
--- a/stx_libjava.st	Sun Dec 07 01:25:54 2014 +0000
+++ b/stx_libjava.st	Sun Dec 07 02:16:08 2014 +0000
@@ -51,11 +51,6 @@
      as of 1.9.2010
 
 "
-!
-
-extensionsVersion_HG
-
-    ^ '$Changeset: <not expanded> $'
 ! !
 
 !stx_libjava class methodsFor:'accessing'!
@@ -451,10 +446,12 @@
         ProxyMethodJavaTypeCheckNode
         JavaNativeMethod
         #'JavaNativeMethodImpl_OracleJDK8'
+        (JavaTestCaseProxy autoload)
+        (JavaRefsAndConstantPoolTestCase autoload)
         (GroovyEvaluatorTests autoload)
         (JUnitTestCaseProxy autoload)
+        (JavaByteCodeProcessorTests autoload)
         (JavaByteCodeDisassemblerTests autoload)
-        (JavaByteCodeProcessorTests autoload)
         (JavaClassLoadingTests autoload)
         (JavaClassReaderTests autoload)
         (JavaClassRefTests autoload)
@@ -470,15 +467,15 @@
         (JavaMonitorsTests autoload)
         (JavaNativeMemoryTests autoload)
         (JavaRefMock autoload)
-        (JavaRefsAndConstantPoolTestCase autoload)
         (JavaReleaseTests autoload)
         (JavaRuntimeConstantPoolTests autoload)
-        (JavaTestCaseProxy autoload)
         (JavaTestsResource autoload)
         (JavaThreadingTests autoload)
         (JavaUTF8Tests autoload)
         (TestletTestCaseProxy autoload)
     )
+
+    "Modified: / 07-12-2014 / 02:10:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 extensionMethodNames