resolveClass native resolves whole CP, for even more eager resolving, run JavaVM enableEagerResolving :) jk_new_structure
authorhlopkmar
Thu, 08 Dec 2011 20:15:01 +0000
branchjk_new_structure
changeset 1246 2e7d85df01f8
parent 1245 7cf4e252749a
child 1247 59574ba88702
resolveClass native resolves whole CP, for even more eager resolving, run JavaVM enableEagerResolving :)
src/JavaClass.st
src/JavaVM.st
src/Make.proto
src/Make.spec
src/abbrev.stc
src/bc.mak
src/libjava.rc
--- a/src/JavaClass.st	Thu Dec 08 18:27:39 2011 +0000
+++ b/src/JavaClass.st	Thu Dec 08 20:15:01 2011 +0000
@@ -1169,42 +1169,34 @@
 
 classInit
     "call the classes JAVA clinit function"
-
-    |m|                                                                                    
-
-    (accessFlags bitAnd:A_INITIALIZED) ~~ 0 ifTrue:[^ self].
-
-    accessFlags := accessFlags bitOr:A_INITIALIZED.
-
-    superclass ~~ JavaObject ifTrue:[
-        superclass classInit
-    ].
-
-    "JV@2011-12-03: Also call initializeStaticFields"
+    
+    | m |
+    (accessFlags bitAnd: A_INITIALIZED) ~~ 0 ifTrue: [ ^ self ].
+    accessFlags := accessFlags bitOr: A_INITIALIZED.
+    superclass ~~ JavaObject ifTrue: [ superclass classInit ].
+     "JV@2011-12-03: Also call initializeStaticFields"
     self initializeStaticFields.
-
-    m := self compiledMethodAt:#'<clinit>()V'.    
-    m notNil ifTrue:[
+    m := self compiledMethodAt: #'<clinit>()V'.
+    m notNil ifTrue: [
         "/'calling <clinit>() of ' print. self fullName printNL.
         [
-            OrderOfClassInits notNil ifTrue:[
-                OrderOfClassInits add:self.
-            ].
-
-            m
-                valueWithReceiver:self
-                arguments:#()
-                selector:#'<clinit>()V'
-                search:self class
-                sender:nil
-        ] valueOnUnwindDo:[
-            accessFlags := accessFlags bitXor:A_INITIALIZED.
-        ].
+            OrderOfClassInits notNil ifTrue: [ OrderOfClassInits add: self. ].
+            m 
+                valueWithReceiver: self
+                arguments: #()
+                selector: #'<clinit>()V'
+                search: self class
+                sender: nil
+        ] valueOnUnwindDo: [ accessFlags := accessFlags bitXor: A_INITIALIZED. ].
+        
         "/'calling <clinit>() done ' print. self fullName printNL.
-    ] ifFalse:[
-"/        self fullName print. ' has no clinit()' printNL.
+    ] ifFalse: [
+        "/        self fullName print. ' has no clinit()' printNL.
     ].
-
+    (JavaVM booted and: [JavaVM eagerResolvingEnabled] )ifTrue: [
+        JavaClassReader classLoaderQuerySignal answer: classLoader
+            do: [ self resolveAll. ]
+    ].
 
     "
      JavaVM instructionTrace:true.
@@ -1214,12 +1206,12 @@
      (Java classNamed:'java.lang.System') classInit
 
      (Java classNamed:'java/io/FileDescriptor') classInit
-     (Java classNamed:'java.util.Properties') classInit
-    "
+     (Java classNamed:'java.util.Properties') classInit"
 
     "Modified: / 12-11-1998 / 15:41:11 / cg"
     "Modified: / 18-08-2011 / 19:37:33 / jv"
     "Modified: / 03-12-2011 / 12:19:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 08-12-2011 / 21:05:21 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 initializeStaticFields
@@ -1262,12 +1254,6 @@
 
 resolveAll
     "resolve every ref in constantPool"
-    
-    Logger 
-        log: self class name , ': trying to resolve whole constant pool'
-        severity: #debug
-        facility: #JVM.
-    self breakPoint: #mh.
     constantPool do: [
         :each | 
         (each isJavaRef or: [ each isJavaNameAndType ]) ifTrue: [ each resolve ]
@@ -1834,6 +1820,13 @@
     "Created: / 07-08-2011 / 15:50:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+isFullyResolved
+constantPool do: [:each | (each isJavaRef and: [each isResolved not]) ifTrue: [^false]].
+^ true.
+
+    "Created: / 08-12-2011 / 20:44:06 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
 isJavaArrayClass
 
     ^false
--- a/src/JavaVM.st	Thu Dec 08 18:27:39 2011 +0000
+++ b/src/JavaVM.st	Thu Dec 08 20:15:01 2011 +0000
@@ -49,7 +49,7 @@
 		ZipLastModTimesCache ZipInflaters JavaPrivilegedAccessQuery
 		ClassRegistry SystemClassLoader ExtClassLoader StartupTime
 		FinalizationEnabled FinalizationLobby ParkUnparkSemaphores
-		threadInterrupts'
+		threadInterrupts EagerResolvingEnabled'
 	poolDictionaries:'JavaConstants'
 	category:'Languages-Java-Support'
 !
@@ -1352,56 +1352,56 @@
     ExceptionDebug := ExitDebug := false.
     ExceptionDebugPatterns := Set new.
     WindowCreationTrace := false.
-    FileOpenConfirmation := false."/true.
-    SocketConnectConfirmation := false."/true.
+    FileOpenConfirmation := false.
+    SocketConnectConfirmation := false.
     WindowOPTrace := false.
     MonitorTrace := false.
     ThreadTrace := false.
-    UnhandledJavaExceptionSignal := (Signal new) mayProceed:true.
-    UnhandledJavaExceptionSignal nameClass:self
-        message:#unhandledJavaExceptionSignal.
-    UnhandledJavaExceptionSignal notifierString:'unhandled java exception'.
-    JavaExceptionSignal := (Signal new) mayProceed:false.
-    JavaExceptionSignal nameClass:self message:#javaExceptionSignal.
-    JavaExceptionSignal notifierString:'java exception'.
-    UnimplementedInstructionSignal := (Signal new) mayProceed:false.
-    UnimplementedInstructionSignal nameClass:self
-        message:#unimplementedInstructionSignal.
-    UnimplementedInstructionSignal notifierString:'unimplemented instruction'.
-    UnimplementedNativeMethodSignal := (Signal new) mayProceed:false.
-    UnimplementedNativeMethodSignal nameClass:self
-        message:#unimplementedNativeMethodSignal.
+    UnhandledJavaExceptionSignal := (Signal new) mayProceed: true.
+    UnhandledJavaExceptionSignal nameClass: self
+        message: #unhandledJavaExceptionSignal.
+    UnhandledJavaExceptionSignal notifierString: 'unhandled java exception'.
+    JavaExceptionSignal := (Signal new) mayProceed: false.
+    JavaExceptionSignal nameClass: self message: #javaExceptionSignal.
+    JavaExceptionSignal notifierString: 'java exception'.
+    UnimplementedInstructionSignal := (Signal new) mayProceed: false.
+    UnimplementedInstructionSignal nameClass: self
+        message: #unimplementedInstructionSignal.
+    UnimplementedInstructionSignal notifierString: 'unimplemented instruction'.
+    UnimplementedNativeMethodSignal := (Signal new) mayProceed: false.
+    UnimplementedNativeMethodSignal nameClass: self
+        message: #unimplementedNativeMethodSignal.
     UnimplementedNativeMethodSignal 
-        notifierString:'unimplemented native method'.
-    BadMessageSignal := (Signal new) mayProceed:false.
-    BadMessageSignal nameClass:self message:#badMessageSignal.
-    BadMessageSignal notifierString:'invalid message to JAVA object'.
-    InternalErrorSignal := (Signal new) mayProceed:false.
-    InternalErrorSignal nameClass:self message:#internalErrorSignal.
-    InternalErrorSignal notifierString:'internal error'.
-    CallHandlerSignal := (Signal new) mayProceed:false.
-    CallHandlerSignal nameClass:self message:#callHandlerSignal.
-    CallHandlerSignal notifierString:'internal signal'.
+        notifierString: 'unimplemented native method'.
+    BadMessageSignal := (Signal new) mayProceed: false.
+    BadMessageSignal nameClass: self message: #badMessageSignal.
+    BadMessageSignal notifierString: 'invalid message to JAVA object'.
+    InternalErrorSignal := (Signal new) mayProceed: false.
+    InternalErrorSignal nameClass: self message: #internalErrorSignal.
+    InternalErrorSignal notifierString: 'internal error'.
+    CallHandlerSignal := (Signal new) mayProceed: false.
+    CallHandlerSignal nameClass: self message: #callHandlerSignal.
+    CallHandlerSignal notifierString: 'internal signal'.
     StdinReplacementFileQuerySignal := QuerySignal new.
-    StdinReplacementFileQuerySignal nameClass:self
-        message:#stdinReplacementFileQuerySignal.
-    StdinReplacementFileQuerySignal notifierString:'asking for stdin stream'.
+    StdinReplacementFileQuerySignal nameClass: self
+        message: #stdinReplacementFileQuerySignal.
+    StdinReplacementFileQuerySignal notifierString: 'asking for stdin stream'.
     JavaPrivilegedAccessQuery := QuerySignal new.
-    JavaPrivilegedAccessQuery defaultAnswer:false.
+    JavaPrivilegedAccessQuery defaultAnswer: false.
     AssertionsEnabled := true.
     ClassRegistry := JavaClassRegistry new.
     FinalizationEnabled := true.
     FinalizationLobby := Registry new.
-
+    EagerResolvingEnabled := false.
 
     "
      JavaVM initialize"
 
     "Created: / 02-01-1998 / 18:02:34 / cg"
     "Modified: / 02-12-1998 / 23:02:22 / cg"
-    "Modified: / 01-04-2011 / 12:33:37 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
     "Modified: / 09-10-2011 / 20:29:10 / Marcel Hlopko <hlopik@gmail.com>"
     "Modified: / 14-11-2011 / 21:12:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 08-12-2011 / 21:06:35 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 initializeAdditionalJavaProtocol
@@ -2798,6 +2798,26 @@
     "Created: / 19.10.1998 / 16:02:06 / cg"
 ! !
 
+!JavaVM class methodsFor:'eager resolving'!
+
+disableEagerResolving
+    EagerResolvingEnabled := false.
+
+    "Created: / 08-12-2011 / 21:06:11 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
+eagerResolvingEnabled
+    ^ EagerResolvingEnabled.
+
+    "Created: / 08-12-2011 / 21:05:21 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
+enableEagerResolving
+     EagerResolvingEnabled := true.
+
+    "Created: / 08-12-2011 / 21:06:03 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+! !
+
 !JavaVM class methodsFor:'fileIO'!
 
 addOpenFile:aStream
@@ -5309,8 +5329,7 @@
     
     | className  b  off  len  pd  source  bs  cls |
     className := Java as_ST_String: (nativeContext argAt: 1).
-     "if name starts with java.* or package is signed by something else and we are not signed, throw security exception" "ClassLoadersTest>>testEyeOpeningClassLoaderLoadObject"
-     "18.11. mh revised - they really test it against java., totally ignoring boot class path.. That surpsised me"
+     "if name starts with java.* or package is signed by something else and we are not signed, throw security exception" "ClassLoadersTest>>testEyeOpeningClassLoaderLoadObject" "18.11. mh revised - they really test it against java., totally ignoring boot class path.. That surpsised me"
     (className startsWith: 'java.') ifTrue: [
         self throwSecurityExceptionWith: 'className=' , className
     ].
@@ -5339,11 +5358,12 @@
                      "FIXME: What to do with source?"
                     cls.
                 ].
+    "JavaClassReader classLoaderQuerySignal answer: nativeContext receiver
+        do: [ cls resolveAll. ]."
     ^ self reflection javaClassObjectForClass: cls.
 
     "Modified: / 30-10-2011 / 21:46:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 02-11-2011 / 22:10:21 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified (comment): / 18-11-2011 / 15:21:22 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 08-12-2011 / 20:56:51 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 _java_lang_ClassLoader_findBootstrapClass: nativeContext 
@@ -5415,8 +5435,8 @@
     ].
     cls := self reflection classForJavaClassObject: jCls.
     self assert: cls notNil.
-     "JavaClassReader classLoaderQuerySignal answer: jClassLoader
-     do: [ cls resolveAll. ]"
+    JavaClassReader classLoaderQuerySignal answer: jClassLoader
+     do: [ cls resolveAll. ].
     ^ cls.
 
     "
@@ -5438,7 +5458,7 @@
     "Modified: / 20-10-1998 / 19:01:57 / cg"
     "Modified: / 28-01-2011 / 15:28:18 / Marcel Hlopko <hlopik@gmail.com>"
     "Modified: / 14-09-2011 / 22:14:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 22-11-2011 / 14:50:14 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 08-12-2011 / 20:52:03 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 _java_lang_Class_desiredAssertionStatus0: aJavaContext
@@ -8133,11 +8153,11 @@
     "Modified: / 05-12-2011 / 00:41:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-_java_util_zip_Deflater_initIDs: nativeContext
-
+_java_util_zip_Deflater_initIDs: nativeContext 
     <javanative: 'java/util/zip/Deflater' name: 'initIDs'>
-
-    ^ UnimplementedNativeMethodSignal raise
+Logger log: '_java_util_zip_Deflater_initIDs unnimplemented' severity:#info facility:#JVM.
+
+    "Modified: / 08-12-2011 / 21:11:41 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 !
 
 _java_util_zip_Inflater_end: nativeContext
--- a/src/Make.proto	Thu Dec 08 18:27:39 2011 +0000
+++ b/src/Make.proto	Thu Dec 08 20:15:01 2011 +0000
@@ -1,7 +1,7 @@
 # $Header$
 #
 # DO NOT EDIT
-# automagically generated from the projectDefinition: stx_libjava at 2011-12-08 19:26:11.109.
+# automagically generated from the projectDefinition: stx_libjava at 2011-12-08 21:14:20.980.
 #
 # Warning: once you modify this file, do not rerun
 # stmkmp or projectDefinition-build again - otherwise, your changes are lost.
--- a/src/Make.spec	Thu Dec 08 18:27:39 2011 +0000
+++ b/src/Make.spec	Thu Dec 08 20:15:01 2011 +0000
@@ -1,7 +1,7 @@
 # $Header$
 #
 # DO NOT EDIT
-# automagically generated from the projectDefinition: stx_libjava at 2011-12-08 19:26:10.398.
+# automagically generated from the projectDefinition: stx_libjava at 2011-12-08 21:14:20.285.
 #
 # Warning: once you modify this file, do not rerun
 # stmkmp or projectDefinition-build again - otherwise, your changes are lost.
--- a/src/abbrev.stc	Thu Dec 08 18:27:39 2011 +0000
+++ b/src/abbrev.stc	Thu Dec 08 20:15:01 2011 +0000
@@ -32,7 +32,7 @@
 JavaFreshlyInitializedResource JavaFreshlyInitializedResource stx:libjava 'Languages-Java-Tests' 1
 JavaInitializedResource JavaInitializedResource stx:libjava 'Languages-Java-Tests' 2
 JavaInterfaceMethodRefTests JavaInterfaceMethodRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
-JavaJUnitTests JavaJUnitTests stx:libjava 'Languages-Java-Tests-Libraries' 0
+JavaJUnitTests JavaJUnitTests stx:libjava 'Languages-Java-Tests-Libraries' 1
 JavaJavadocNode JavaJavadocNode stx:libjava 'Languages-Java-AST' 0
 JavaLanguage JavaLanguage stx:libjava 'Languages-Java-Support' 1
 JavaLibraries JavaLibraries stx:libjava 'Languages-Java-Support' 0
@@ -42,7 +42,7 @@
 JavaMathSupport JavaMathSupport stx:libjava 'Languages-Java-Support-Native' 0
 JavaMethodRefTests JavaMethodRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaMonitor JavaMonitor stx:libjava 'Languages-Java-Support' 0
-JavaMonitorsTests JavaMonitorsTests stx:libjava 'Languages-Java-Tests-Synchronization' 0
+JavaMonitorsTests JavaMonitorsTests stx:libjava 'Languages-Java-Tests-Synchronization' 1
 JavaNameAndType2 JavaNameAndType2 stx:libjava 'Languages-Java-Reader-Support-new' 0
 JavaNativeMemory JavaNativeMemory stx:libjava 'Languages-Java-Support' 0
 JavaNode JavaNode stx:libjava 'Languages-Java-AST' 0
@@ -50,9 +50,9 @@
 JavaObjectDictionary JavaObjectDictionary stx:libjava 'Languages-Java-Support' 0
 JavaPackage JavaPackage stx:libjava 'Languages-Java-Support' 0
 JavaParseResult JavaParseResult stx:libjava 'Languages-Java-Parser' 0
-JavaParserNavigationTests JavaParserNavigationTests stx:libjava 'Languages-Java-Tests' 0
-JavaParserTestCase JavaParserTestCase stx:libjava 'Languages-Java-Tests' 0
-JavaParserTests JavaParserTests stx:libjava 'Languages-Java-Tests' 0
+JavaParserNavigationTests JavaParserNavigationTests stx:libjava 'Languages-Java-Tests' 1
+JavaParserTestCase JavaParserTestCase stx:libjava 'Languages-Java-Tests' 1
+JavaParserTests JavaParserTests stx:libjava 'Languages-Java-Tests' 1
 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
@@ -61,7 +61,7 @@
 JavaRelease JavaRelease stx:libjava 'Languages-Java-Support' 0
 JavaResolver JavaResolver stx:libjava 'Languages-Java-Reader-Support-new' 0
 JavaRuntimeConstantPoolTests JavaRuntimeConstantPoolTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
-JavaSelectorParserTests JavaSelectorParserTests stx:libjava 'Languages-Java-Lookup-Tests' 0
+JavaSelectorParserTests JavaSelectorParserTests stx:libjava 'Languages-Java-Lookup-Tests' 1
 JavaShort JavaShort stx:libjava 'Languages-Java-Support' 0
 JavaSlotIndexCache JavaSlotIndexCache stx:libjava 'Languages-Java-Support' 0
 JavaSocket JavaSocket stx:libjava 'Languages-Java-Support' 0
@@ -72,19 +72,19 @@
 JavaTestsLoader JavaTestsLoader stx:libjava 'Languages-Java-Tests' 0
 JavaTestsResource JavaTestsResource stx:libjava 'Languages-Java-Tests' 2
 JavaTopView JavaTopView stx:libjava 'Languages-Java-Views-Support' 2
-JavaUTF8Tests JavaUTF8Tests stx:libjava 'Languages-Java-Tests' 0
+JavaUTF8Tests JavaUTF8Tests stx:libjava 'Languages-Java-Tests' 1
 JavaUnresolvedConstant JavaUnresolvedConstant stx:libjava 'Languages-Java-Reader-Support' 0
 JavaView JavaView stx:libjava 'Languages-Java-Views-Support' 2
 JavaZipSupport JavaZipSupport stx:libjava 'Languages-Java-Support' 0
-LookupIntegrationTests LookupIntegrationTests stx:libjava 'Languages-Java-Lookup-Tests' 0
-LookupIntegrationTestsResource LookupIntegrationTestsResource stx:libjava 'Languages-Java-Lookup-Tests' 0
-LookupTests LookupTests stx:libjava 'Languages-Java-Lookup-Tests' 0
-MPXJTests MPXJTests stx:libjava 'Languages-Java-Tests-Libraries' 0
+LookupIntegrationTests LookupIntegrationTests stx:libjava 'Languages-Java-Lookup-Tests' 1
+LookupIntegrationTestsResource LookupIntegrationTestsResource stx:libjava 'Languages-Java-Lookup-Tests' 3
+LookupTests LookupTests stx:libjava 'Languages-Java-Lookup-Tests' 1
+MPXJTests MPXJTests stx:libjava 'Languages-Java-Tests-Libraries' 1
 PPJavaNode PPJavaNode stx:libjava 'Languages-Java-AST' 0
 SmalltalkAppletContext SmalltalkAppletContext stx:libjava 'Languages-Java-Views-Support' 0
 SmalltalkAppletStub SmalltalkAppletStub stx:libjava 'Languages-Java-Views-Support' 0
-SmalltalkSelectorParserTests SmalltalkSelectorParserTests stx:libjava 'Languages-Java-Lookup-Tests' 0
-TestletTestCaseProxy TestletTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 0
+SmalltalkSelectorParserTests SmalltalkSelectorParserTests stx:libjava 'Languages-Java-Lookup-Tests' 1
+TestletTestCaseProxy TestletTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
 stx_libjava stx_libjava stx:libjava '* Projects & Packages *' 3
 JavaAnnotationArrayValue JavaAnnotationArrayValue stx:libjava 'Languages-Java-Reader-Support' 0
 JavaAnnotationClassValue JavaAnnotationClassValue stx:libjava 'Languages-Java-Reader-Support' 0
--- a/src/bc.mak	Thu Dec 08 18:27:39 2011 +0000
+++ b/src/bc.mak	Thu Dec 08 20:15:01 2011 +0000
@@ -1,7 +1,7 @@
 # $Header$
 #
 # DO NOT EDIT
-# automagically generated from the projectDefinition: stx_libjava at 2011-12-08 19:26:11.514.
+# automagically generated from the projectDefinition: stx_libjava at 2011-12-08 21:14:21.372.
 #
 # Warning: once you modify this file, do not rerun
 # stmkmp or projectDefinition-build again - otherwise, your changes are lost.
--- a/src/libjava.rc	Thu Dec 08 18:27:39 2011 +0000
+++ b/src/libjava.rc	Thu Dec 08 20:15:01 2011 +0000
@@ -3,7 +3,7 @@
 // automagically generated from the projectDefinition: stx_libjava.
 //
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION     6,2,0,1
+  FILEVERSION     6,2,1589,1589
   PRODUCTVERSION  6,2,1,1
 #if (__BORLANDC__)
   FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
@@ -20,12 +20,12 @@
     BEGIN
       VALUE "CompanyName", "eXept Software AG\0"
       VALUE "FileDescription", "Smalltalk/X Class library (LIB)\0"
-      VALUE "FileVersion", "6.2.0.1\0"
+      VALUE "FileVersion", "6.2.1589.1589\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\b          SWING Research Group, Czech Technical University In Prague\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.1.1\0"
-      VALUE "ProductDate", "Thu, 08 Dec 2011 18:26:13 GMT\0"
+      VALUE "ProductDate", "Thu, 08 Dec 2011 20:14:27 GMT\0"
     END
 
   END