Fix in Java: do not flush Threads dictionary when rebooting JVM
authorJan Vrany <jan.vrany@fit.cvut.cz>
Thu, 18 Sep 2014 16:13:31 +0100
changeset 3241 422e32abb28d
parent 3240 4e707dec1e44
child 3242 b340178eb595
Fix in Java: do not flush Threads dictionary when rebooting JVM This could (and did) break assections in Java class>>removeThread:for: in case a Smalltalk process (for which a java.lang.Thread has been lazily created) outlives a JVM reboot and then dies. In that case, it is no longer in Threads dictonary (because it was flushed) but it's exit action still calls #emoveThread:for:.
Java.st
abbrev.stc
experiments/Make.proto
experiments/abbrev.stc
experiments/bc.mak
experiments/experiments.rc
experiments/stx_libjava_experiments.st
libjava.rc
stx_libjava.st
tools/tools.rc
--- a/Java.st	Thu Sep 18 11:56:27 2014 +0100
+++ b/Java.st	Thu Sep 18 16:13:31 2014 +0100
@@ -307,7 +307,11 @@
     SourceCache := CacheDictionary new: 32.
     SourceArchiveCache := CacheDictionary new: 32.
 
-    Threads := IdentityDictionary new.
+    "/ Sigh, check for the very first initialization...
+    Threads isNil ifTrue:[
+        ThreadsAccess := RecursionLock forMutualExclusion.
+        Threads := IdentityDictionary new.
+    ].
 
     ClassPathBundle := JavaClassPathBundle new.
     ClassPath isNil ifTrue:[ClassPath:= OrderedCollection new]. "/ for ad-hoc packages
@@ -335,7 +339,7 @@
     "Created: / 03-10-2010 / 15:54:02 / Jan Kurs <kurs.jan@post.cz>"
     "Modified: / 15-10-2010 / 17:37:20 / Jan Kurs <kurs.jan@post.cz>"
     "Modified: / 09-12-2011 / 13:16:15 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 19-02-2013 / 21:04:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-09-2014 / 13:47:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 initializePrettyPrintStyle
@@ -466,51 +470,54 @@
 !
 
 terminateAllThreads
+    "Terminates all pure Java threads (i.e., threads created by the JVM."
+
     | myself  threadsToKill  semaphore |
-    Threads isNil ifTrue: [ ^ self ].
+
+    Threads isEmptyOrNil  ifTrue: [ ^ self ].
+
     myself := Processor activeProcess.
     threadsToKill := IdentitySet new.
-    Threads do: [
-	:aJavaThread |
-	aJavaThread ~~ myself ifTrue: [
-	    (aJavaThread isNil or: [ aJavaThread == 0 ]) ifFalse: [
-		(aJavaThread isMemberOf: JavaProcess) ifTrue: [
-		    aJavaThread isDead ifFalse: [ threadsToKill add: aJavaThread ]
-		]
-	    ]
-	]
+    ThreadsAccess critical:[
+        Threads do: [:aJavaThread |
+            aJavaThread ~~ myself ifTrue: [
+                "/ What's the aim of the check below? Looks like a check for weak corpse (object's gone)
+                "/ but Threads is not a weak dictionary!!
+                "/ (aJavaThread isNil or: [ aJavaThread == 0 ]) ifFalse: [
+                    (aJavaThread isDead not and:[aJavaThread isMemberOf: JavaProcess]) ifTrue: [
+                        threadsToKill add: aJavaThread 
+                    ]
+                "/ ]
+            ]
+        ].
     ].
-    threadsToKill size > 0 ifTrue: [
-	Logger
-	    log: 'Killing ' , threadsToKill size printString , ' java processes'
-	    severity: #info
-	    facility: #JVM.
-	semaphore := Semaphore new: 1 - threadsToKill size.
-	semaphore name: 'Java thread killer'.
-	threadsToKill do: [
-	    :aThread |
-	    aThread == JavaVM javaScreenUpdaterThread ifTrue: [ self halt ].
-	    aThread == JavaVM javaEventQueueThread ifTrue: [ self halt ].
-	    aThread
-		addExitAction: [
-		    Logger
-			log: 'Java thread killed successfully'
-			severity: #info
-			facility: #JVM.
-		    semaphore signal
-		].
-
-	    aThread terminate
-	].
-	semaphore wait.
+    threadsToKill notEmptyOrNil ifTrue: [
+        Logger
+            log: 'Killing ' , threadsToKill size printString , ' java processes'
+            severity: #info
+            facility: #JVM.
+        semaphore := Semaphore new: 1 - threadsToKill size.
+        semaphore name: 'Java thread killer'.
+        threadsToKill do: [ :aThread |
+            aThread == JavaVM javaScreenUpdaterThread ifTrue: [ self halt ].
+            aThread == JavaVM javaEventQueueThread ifTrue: [ self halt ].
+            aThread
+                addExitAction: [
+                    Logger
+                        log: 'Java thread killed successfully'
+                        severity: #info
+                        facility: #JVM.
+                    semaphore signal
+                ].
+            aThread terminate
+        ].
+        semaphore wait.
     ].
     JavaVM releaseAllMonitors.
     Logger
-	log: 'No Java threads running at this point'
-	severity: #info
-	facility: #JVM.
-
-    Threads := nil.
+        log: 'No Java threads running at this point'
+        severity: #info
+        facility: #JVM.
 
     "
      Java terminateAllThreads"
@@ -518,6 +525,7 @@
     "Created: / 26-08-1997 / 19:57:40 / cg"
     "Modified: / 24-12-1999 / 02:34:53 / cg"
     "Modified: / 17-11-2011 / 21:31:14 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 18-09-2014 / 13:55:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !Java class methodsFor:'debugging'!
@@ -1128,7 +1136,6 @@
     InternedStrings := Dictionary new.
     SourceCache := CacheDictionary new: 32.
     SourceArchiveCache := CacheDictionary new: 32.
-    ThreadsAccess := RecursionLock forMutualExclusion.
     ClassPathPackages := nil.
     JavaMonitor initialize.
     Smalltalk garbageCollect.
@@ -1171,7 +1178,7 @@
 
     "Modified: / 06-11-2001 / 09:49:37 / cg"
     "Modified: / 02-11-2011 / 21:34:13 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 30-11-2013 / 06:59:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-09-2014 / 13:44:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 flushClasses
@@ -1557,23 +1564,14 @@
 
 removeThread: jThread for: stProcess
     ThreadsAccess critical: [
-        "/ Following assertions should be true most of the time,
-        "/ however, when shuting down Java (by means of
-        "/ Java class>>flushAllJavaResources), Threads global
-        "/ might be nilled out before all thread die.
-        "/ I (JV would like to keep those assertions at least for
-        "/ a while, so guard them no notEmptyOrNil test.
-        Threads notEmptyOrNil ifTrue:[
-            self assert: (Threads includesKey: jThread).
-            self assert: (Threads at: jThread) == stProcess.
-        ].
+        self assert: (Threads includesKey: jThread).
+        self assert: (Threads at: jThread) == stProcess.
         Threads removeKey: jThread ifAbsent:nil.
     ]
 
     "Created: / 26-08-1997 / 19:53:57 / cg"
     "Created: / 09-12-2011 / 12:47:32 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified (format): / 14-08-2014 / 09:44:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-
+    "Modified: / 18-09-2014 / 13:57:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 threadForStProcess: stProcess
--- a/abbrev.stc	Thu Sep 18 11:56:27 2014 +0100
+++ b/abbrev.stc	Thu Sep 18 16:13:31 2014 +0100
@@ -3,7 +3,6 @@
 # it provides information about a classes filename, category and especially namespace.
 GroovyCompiler GroovyCompiler stx:libjava 'Languages-Groovy-Compiler' 0
 GroovyEvaluator GroovyEvaluator stx:libjava 'Languages-Groovy-Compiler' 0
-GroovyEvaluatorTests GroovyEvaluatorTests stx:libjava 'Languages-Groovy-Tests' 1
 GroovyLanguage GroovyLanguage stx:libjava 'Languages-Groovy-Support' 1
 GroovySourceFileWriter GroovySourceFileWriter stx:libjava 'Languages-Groovy-Support' 0
 JavaAnnotation JavaAnnotation stx:libjava 'Languages-Java-Reader-Support' 0
@@ -11,15 +10,12 @@
 JavaAnnotationDefault JavaAnnotationDefault stx:libjava 'Languages-Java-Annotations' 1
 JavaAnnotationDictionary JavaAnnotationDictionary stx:libjava 'Languages-Java-Annotations' 1
 JavaAnnotationValue JavaAnnotationValue stx:libjava 'Languages-Java-Reader-Support' 0
-JavaAntProjectResource JavaAntProjectResource stx:libjava 'Languages-Java-Tests' 2
 JavaArray JavaArray stx:libjava 'Languages-Java-Classes' 1
 JavaBooleanArray JavaBooleanArray stx:libjava 'Languages-Java-Support' 0
 JavaByte JavaByte stx:libjava 'Languages-Java-Support' 0
 JavaByteCodeProcessor JavaByteCodeProcessor stx:libjava 'Languages-Java-Bytecode' 0
-JavaByteCodeProcessorTests JavaByteCodeProcessorTests stx:libjava 'Languages-Java-Tests' 1
 JavaClassAccessor JavaClassAccessor stx:libjava 'Languages-Java-Classes' 0
 JavaClassEnvironment JavaClassEnvironment stx:libjava 'Languages-Java-Support' 0
-JavaClassLoadingTests JavaClassLoadingTests stx:libjava 'Languages-Java-Tests-ClassLoading' 1
 JavaClassQuery JavaClassQuery stx:libjava 'Languages-Java-Classes' 1
 JavaClassReloader JavaClassReloader stx:libjava 'Languages-Java-Support' 0
 JavaCodeLibraryOrBundle JavaCodeLibraryOrBundle stx:libjava 'Languages-Java-Support-Libraries' 0
@@ -32,26 +28,18 @@
 JavaDescriptor JavaDescriptor stx:libjava 'Languages-Java-Support' 0
 JavaError JavaError stx:libjava 'Languages-Java-Support' 1
 JavaExceptionTable JavaExceptionTable stx:libjava 'Languages-Java-Support' 0
-JavaExceptionTests JavaExceptionTests stx:libjava 'Languages-Java-Tests' 1
 JavaField JavaField stx:libjava 'Languages-Java-Reader-Support' 0
 JavaFinalizationRegistry JavaFinalizationRegistry stx:libjava 'Languages-Java-Support' 0
-JavaFreshlyInitializedResource JavaFreshlyInitializedResource stx:libjava 'Languages-Java-Tests' 1
 JavaInnerClasses JavaInnerClasses stx:libjava 'Languages-Java-Support' 0
-JavaJUnitTests JavaJUnitTests stx:libjava 'Languages-Java-Tests-Libraries' 1
 JavaLanguage JavaLanguage stx:libjava 'Languages-Java-Support' 1
 JavaLibraries JavaLibraries stx:libjava 'Languages-Java-Support' 0
-JavaLibrariesResource JavaLibrariesResource stx:libjava 'Languages-Java-Tests' 1
 JavaLocalVariableTable JavaLocalVariableTable stx:libjava 'Languages-Java-Support' 0
 JavaLocalVariableTableEntry JavaLocalVariableTableEntry stx:libjava 'Languages-Java-Support' 0
 JavaLookup JavaLookup stx:libjava 'Languages-Java-Interop' 0
-JavaLookupResolutionAlgorithmTests JavaLookupResolutionAlgorithmTests stx:libjava 'Languages-Java-Tests-Interop' 1
-JavaLookupTests JavaLookupTests stx:libjava 'Languages-Java-Tests-Interop' 1
 JavaMetaclass JavaMetaclass stx:libjava 'Languages-Java-Classes' 0
 JavaMonitor JavaMonitor stx:libjava 'Languages-Java-Support' 0
-JavaMonitorsTests JavaMonitorsTests stx:libjava 'Languages-Java-Tests' 1
 JavaNameAndType2 JavaNameAndType2 stx:libjava 'Languages-Java-Reader-Support-new' 0
 JavaNativeMemory JavaNativeMemory stx:libjava 'Languages-Java-Support' 0
-JavaNativeMemoryTests JavaNativeMemoryTests stx:libjava 'Languages-Java-Tests' 1
 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
@@ -59,20 +47,15 @@
 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
-JavaRefsAndConstantPoolTestCase JavaRefsAndConstantPoolTestCase stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaRelease JavaRelease stx:libjava 'Languages-Java-Support' 1
-JavaReleaseTests JavaReleaseTests stx:libjava 'Languages-Java-Tests' 1
 JavaResolver JavaResolver stx:libjava 'Languages-Java-Reader-Support-new' 0
 JavaShort JavaShort stx:libjava 'Languages-Java-Support' 0
 JavaSlotIndexCache JavaSlotIndexCache stx:libjava 'Languages-Java-Support' 0
 JavaSocket JavaSocket stx:libjava 'Languages-Java-Support' 0
 JavaSourceCodeCache JavaSourceCodeCache stx:libjava 'Languages-Java-Support' 1
 JavaSourceFileWriter JavaSourceFileWriter stx:libjava 'Languages-Java-Support' 0
-JavaTestCaseProxy JavaTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
 JavaTestsLoader JavaTestsLoader stx:libjava 'Languages-Java-Tests' 0
-JavaThreadingTests JavaThreadingTests stx:libjava 'Languages-Java-Tests' 1
 JavaTopView JavaTopView stx:libjava 'Languages-Java-Views-Support' 2
-JavaUTF8Tests JavaUTF8Tests stx:libjava 'Languages-Java-Tests' 1
 JavaUnresolvedCompilationError JavaUnresolvedCompilationError stx:libjava 'Languages-Java-Support' 1
 JavaUnresolvedConstant JavaUnresolvedConstant stx:libjava 'Languages-Java-Reader-Support' 0
 JavaUtilities JavaUtilities stx:libjava 'Languages-Java-Utilities' 0
@@ -88,7 +71,6 @@
 SmalltalkAppletStub SmalltalkAppletStub stx:libjava 'Languages-Java-Views-Support' 0
 stx_libjava stx_libjava stx:libjava '* Projects & Packages *' 3
 GroovyMetaclass GroovyMetaclass stx:libjava 'Languages-Groovy-Classes' 0
-JUnitTestCaseProxy JUnitTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
 Java Java stx:libjava 'Languages-Java-Support' 0
 JavaAnnotationArrayValue JavaAnnotationArrayValue stx:libjava 'Languages-Java-Reader-Support' 0
 JavaAnnotationClassValue JavaAnnotationClassValue stx:libjava 'Languages-Java-Reader-Support' 0
@@ -97,15 +79,12 @@
 JavaAnnotationPrimitiveValue JavaAnnotationPrimitiveValue stx:libjava 'Languages-Java-Reader-Support' 0
 JavaBehavior JavaBehavior stx:libjava 'Languages-Java-Classes' 0
 JavaByteCodeDisassembler JavaByteCodeDisassembler stx:libjava 'Languages-Java-Bytecode' 0
-JavaByteCodeDisassemblerTests JavaByteCodeDisassemblerTests stx:libjava 'Languages-Java-Tests' 1
 JavaByteCodeEnumerator JavaByteCodeEnumerator stx:libjava 'Languages-Java-Support-Decompiling' 0
 JavaByteCodeProcessorAdapter JavaByteCodeProcessorAdapter stx:libjava 'Languages-Java-Bytecode' 0
 JavaClassAnnotationContainer JavaClassAnnotationContainer stx:libjava 'Languages-Java-Annotations' 1
 JavaClassMemberRef2 JavaClassMemberRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
 JavaClassReader JavaClassReader stx:libjava 'Languages-Java-Support' 0
-JavaClassReaderTests JavaClassReaderTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaClassRef2 JavaClassRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
-JavaClassRefTests JavaClassRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaClassRegistry JavaClassRegistry stx:libjava 'Languages-Java-Support' 0
 JavaCodeBundle JavaCodeBundle stx:libjava 'Languages-Java-Support-Libraries' 0
 JavaCodeLibrary JavaCodeLibrary stx:libjava 'Languages-Java-Support-Libraries' 0
@@ -113,23 +92,16 @@
 JavaFieldAnnotationContainer JavaFieldAnnotationContainer stx:libjava 'Languages-Java-Annotations' 1
 JavaFieldDescriptor JavaFieldDescriptor stx:libjava 'Languages-Java-Support' 0
 JavaFieldDescriptorWithUnionType JavaFieldDescriptorWithUnionType stx:libjava 'Languages-Java-Support' 0
-JavaFieldRefTests JavaFieldRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
-JavaInitializedResource JavaInitializedResource stx:libjava 'Languages-Java-Tests' 2
-JavaInterfaceMethodRefTests JavaInterfaceMethodRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaInvalidRefError JavaInvalidRefError stx:libjava 'Languages-Java-Support' 1
 JavaInvokeDynamic2 JavaInvokeDynamic2 stx:libjava 'Languages-Java-Reader-Support-new' 0
 JavaMethod JavaMethod stx:libjava 'Languages-Java-Classes' 0
 JavaMethodAnnotationContainer JavaMethodAnnotationContainer stx:libjava 'Languages-Java-Annotations' 1
 JavaMethodDescriptor JavaMethodDescriptor stx:libjava 'Languages-Java-Support' 0
 JavaMethodHandle2 JavaMethodHandle2 stx:libjava 'Languages-Java-Reader-Support-new' 0
-JavaMethodRefTests JavaMethodRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaMethodType2 JavaMethodType2 stx:libjava 'Languages-Java-Reader-Support-new' 0
 JavaMirror JavaMirror stx:libjava 'Languages-Java-Classes' 0
 JavaNativeMethodImpl_OpenJDK6 JavaNativeMethodImpl_OpenJDK6 stx:libjava 'Languages-Java-Support-Java 6' 0
-JavaRefMock JavaRefMock stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 0
-JavaRuntimeConstantPoolTests JavaRuntimeConstantPoolTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaStringRef2 JavaStringRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
-JavaTestsResource JavaTestsResource stx:libjava 'Languages-Java-Tests' 2
 JavaUnhandledExceptionError JavaUnhandledExceptionError stx:libjava 'Languages-Java-Support' 1
 JavaUnhandledThreadDeathError JavaUnhandledThreadDeathError stx:libjava 'Languages-Java-Support' 1
 JavaUnresolvedClassConstant JavaUnresolvedClassConstant stx:libjava 'Languages-Java-Reader-Support' 0
@@ -139,7 +111,6 @@
 ProxyMethodGuardNode ProxyMethodGuardNode stx:libjava 'System-Compiler-Interop' 0
 ProxyMethodInvocationNode ProxyMethodInvocationNode stx:libjava 'System-Compiler-Interop' 0
 ProxyMethodJavaFieldAccessor ProxyMethodJavaFieldAccessor stx:libjava 'Languages-Java-Interop' 0
-TestletTestCaseProxy TestletTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
 JavaAlienMirror JavaAlienMirror stx:libjava 'Languages-Java-Classes' 0
 JavaArrayMirror JavaArrayMirror stx:libjava 'Languages-Java-Classes' 0
 JavaByteCodePreresolver JavaByteCodePreresolver stx:libjava 'Languages-Java-Bytecode' 0
@@ -169,3 +140,32 @@
 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
+GroovyEvaluatorTests GroovyEvaluatorTests stx:libjava 'Languages-Groovy-Tests' 1
+JUnitTestCaseProxy JUnitTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
+JavaAntProjectResource JavaAntProjectResource stx:libjava 'Languages-Java-Tests' 2
+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
+JavaExceptionTests JavaExceptionTests stx:libjava 'Languages-Java-Tests' 1
+JavaFieldRefTests JavaFieldRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+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' 1
+JavaLibrariesResource JavaLibrariesResource stx:libjava 'Languages-Java-Tests' 1
+JavaLookupResolutionAlgorithmTests JavaLookupResolutionAlgorithmTests stx:libjava 'Languages-Java-Tests-Interop' 1
+JavaLookupTests JavaLookupTests stx:libjava 'Languages-Java-Tests-Interop' 1
+JavaMethodRefTests JavaMethodRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+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
+TestletTestCaseProxy TestletTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
--- a/experiments/Make.proto	Thu Sep 18 11:56:27 2014 +0100
+++ b/experiments/Make.proto	Thu Sep 18 16:13:31 2014 +0100
@@ -34,7 +34,7 @@
 # add the path(es) here:,
 # ********** OPTIONAL: MODIFY the next lines ***
 # LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libjava -I$(INCLUDE_TOP)/stx/libjava/tools
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libjava
 
 
 # if you need any additional defines for embedded C code,
--- a/experiments/abbrev.stc	Thu Sep 18 11:56:27 2014 +0100
+++ b/experiments/abbrev.stc	Thu Sep 18 16:13:31 2014 +0100
@@ -1,10 +1,7 @@
 # automagically generated by the project definition
 # this file is needed for stc to be able to compile modules independently.
 # it provides information about a classes filename, category and especially namespace.
-Benchmarks::JavaLookup Benchmarks__JavaLookup stx:libjava/experiments 'benchmarks-Misc' 0
 JavaByteCodeInterpreter JavaByteCodeInterpreter stx:libjava/experiments 'Languages-Java-Bytecode' 0
-JavaByteCodeInterpreterTests JavaByteCodeInterpreterTests stx:libjava/experiments 'Languages-Java-Tests' 1
-JavaClassReloaderTests JavaClassReloaderTests stx:libjava/experiments 'Languages-Java-Tests-ClassReloading' 1
 JavaMethodWrapperCompiler JavaMethodWrapperCompiler stx:libjava/experiments 'Languages-Java-Experiments-Lookup' 0
 NoReflectionObject NoReflectionObject stx:libjava/experiments 'Languages-Java-Experiments-Lookup' 0
 PersonSample PersonSample stx:libjava/experiments 'Languages-Java-Experiments-Tests' 0
@@ -12,3 +9,6 @@
 SetSample SetSample stx:libjava/experiments 'Languages-Java-Experiments-Tests' 0
 stx_libjava_experiments stx_libjava_experiments stx:libjava/experiments '* Projects & Packages *' 3
 JavaByteCodeSteppableInterpreter JavaByteCodeSteppableInterpreter stx:libjava/experiments 'Languages-Java-Bytecode' 0
+Benchmarks::JavaLookup Benchmarks__JavaLookup stx:libjava/experiments 'benchmarks-Misc' 0
+JavaByteCodeInterpreterTests JavaByteCodeInterpreterTests stx:libjava/experiments 'Languages-Java-Tests' 1
+JavaClassReloaderTests JavaClassReloaderTests stx:libjava/experiments 'Languages-Java-Tests-ClassReloading' 1
--- a/experiments/bc.mak	Thu Sep 18 11:56:27 2014 +0100
+++ b/experiments/bc.mak	Thu Sep 18 16:13:31 2014 +0100
@@ -34,7 +34,7 @@
 
 
 
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libjava -I$(INCLUDE_TOP)\stx\libjava\tools
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libjava
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
--- a/experiments/experiments.rc	Thu Sep 18 11:56:27 2014 +0100
+++ b/experiments/experiments.rc	Thu Sep 18 16:13:31 2014 +0100
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2014\nCopyright eXept Software AG 1998-2014\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.4.0\0"
-      VALUE "ProductDate", "Mon, 11 Aug 2014 08:34:44 GMT\0"
+      VALUE "ProductDate", "Thu, 18 Sep 2014 14:58:34 GMT\0"
     END
 
   END
--- a/experiments/stx_libjava_experiments.st	Thu Sep 18 11:56:27 2014 +0100
+++ b/experiments/stx_libjava_experiments.st	Thu Sep 18 16:13:31 2014 +0100
@@ -87,7 +87,7 @@
      by searching along the inheritance chain of all of my classes."
 
     ^ #(
-        #'stx:libbasic'    "Collection - superclass of SetSample"
+        #'stx:libbasic'    "Autoload - superclass of Benchmarks::JavaLookup"
         #'stx:libjava'    "Java - superclass of JavaMethodWrapperCompiler"
     )
 !
@@ -118,7 +118,6 @@
      by searching all classes (and their packages) which are referenced by my classes."
 
     ^ #(
-        #'stx:libjava/tools'    "JavaCompiler - referenced by JavaClassReloaderTests>>callerClass"
     )
 !
 
@@ -191,10 +190,7 @@
 
     ^ #(
         "<className> or (<className> attributes...) in load order"
-        (#'Benchmarks::JavaLookup' autoload)
         JavaByteCodeInterpreter
-        (JavaByteCodeInterpreterTests autoload)
-        (JavaClassReloaderTests autoload)
         JavaMethodWrapperCompiler
         NoReflectionObject
         PersonSample
@@ -202,6 +198,9 @@
         SetSample
         #'stx_libjava_experiments'
         JavaByteCodeSteppableInterpreter
+        (#'Benchmarks::JavaLookup' autoload)
+        (JavaByteCodeInterpreterTests autoload)
+        (JavaClassReloaderTests autoload)
     )
 !
 
--- a/libjava.rc	Thu Sep 18 11:56:27 2014 +0100
+++ b/libjava.rc	Thu Sep 18 16:13:31 2014 +0100
@@ -25,7 +25,7 @@
       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", "Tue, 12 Aug 2014 21:37:10 GMT\0"
+      VALUE "ProductDate", "Thu, 18 Sep 2014 14:58:30 GMT\0"
     END
 
   END
--- a/stx_libjava.st	Thu Sep 18 11:56:27 2014 +0100
+++ b/stx_libjava.st	Thu Sep 18 16:13:31 2014 +0100
@@ -315,7 +315,6 @@
         JavaAnnotationDefault
         JavaAnnotationDictionary
         JavaAnnotationValue
-        (JavaAntProjectResource autoload)
         JavaArray
         JavaBooleanArray
         JavaByte
@@ -398,7 +397,6 @@
         JavaFieldAnnotationContainer
         JavaFieldDescriptor
         JavaFieldDescriptorWithUnionType
-        (JavaInitializedResource autoload)
         JavaInvalidRefError
         JavaInvokeDynamic2
         JavaMethod
@@ -449,6 +447,7 @@
         #'JavaNativeMethodImpl_OracleJDK8'
         (GroovyEvaluatorTests autoload)
         (JUnitTestCaseProxy autoload)
+        (JavaAntProjectResource autoload)
         (JavaByteCodeDisassemblerTests autoload)
         (JavaByteCodeProcessorTests autoload)
         (JavaClassLoadingTests autoload)
@@ -457,6 +456,7 @@
         (JavaExceptionTests autoload)
         (JavaFieldRefTests autoload)
         (JavaFreshlyInitializedResource autoload)
+        (JavaInitializedResource autoload)
         (JavaInterfaceMethodRefTests autoload)
         (JavaJUnitTests autoload)
         (JavaLibrariesResource autoload)
--- a/tools/tools.rc	Thu Sep 18 11:56:27 2014 +0100
+++ b/tools/tools.rc	Thu Sep 18 16:13:31 2014 +0100
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.4.0\0"
-      VALUE "ProductDate", "Tue, 12 Aug 2014 21:37:17 GMT\0"
+      VALUE "ProductDate", "Thu, 18 Sep 2014 14:58:37 GMT\0"
     END
 
   END