Merged 7bf7a8831ed9 and 9e60100a47c6
authorJan Vrany <jan.vrany@fit.cvut.cz>
Thu, 14 Aug 2014 16:00:39 +0100
changeset 3234 5c9cb5b7a35b
parent 3233 7bf7a8831ed9 (current diff)
parent 3227 9e60100a47c6 (diff)
child 3235 6a5d85f29c3a
Merged 7bf7a8831ed9 and 9e60100a47c6
--- a/JavaClass.st	Thu Aug 14 12:55:32 2014 +0100
+++ b/JavaClass.st	Thu Aug 14 16:00:39 2014 +0100
@@ -2652,11 +2652,11 @@
 
         innerClasses := Set new.
         innerClassesAttr do:[:each | 
-            (each innerClassRef name ~~ binaryName and:[ each outerClassRef notNil ]) ifTrue:[
+            (each innerClassRef name ~= binaryName) ifTrue:[
                 | innerClass |
 
                 innerClass := ignoreUnloaded ifTrue:[
-                        JavaVM registry classNamed:each innerClassRef name definedBy:classLoader
+                        JavaVM classNamed:each innerClassRef name definedBy:classLoader
                     ] ifFalse:[
                         each innerClassRef resolve:false
                     ].
@@ -2670,6 +2670,7 @@
     ^ #()
 
     "Created: / 08-08-2014 / 16:06:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 12-08-2014 / 22:32:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 isAnonymous
--- a/experiments/JavaClassReloaderTests.st	Thu Aug 14 12:55:32 2014 +0100
+++ b/experiments/JavaClassReloaderTests.st	Thu Aug 14 16:00:39 2014 +0100
@@ -2303,6 +2303,140 @@
     self assert: (JavaVM classNamed: #'test_unloading_03a_A$InnerA' definedBy: testClassLoader) isNil.
 
     "Created: / 11-08-2014 / 09:26:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_unloading_04a
+    "
+    1) compile class A with annonymous class A$1
+    2) remove class A then A$1
+    3) check that A$1 has been removed too.
+    "
+
+    | jclassA jclassA_1 |
+
+    self compileAndRegister:'
+public class test_unloading_04a_A { 
+    public Object foo() {
+        return new Object() { public void bar() { } };
+    }
+}'.
+
+    jclassA := JavaVM classNamed: #'test_unloading_04a_A' definedBy: testClassLoader.
+    jclassA_1 := JavaVM classNamed: #'test_unloading_04a_A$1' definedBy: testClassLoader.
+
+    self assert: (Smalltalk allClasses includesIdentical: jclassA).
+    self assert: (Smalltalk allClasses includesIdentical: jclassA_1).
+
+    jclassA removeFromSystem.
+
+    self assert: (Smalltalk allClasses includesIdentical: jclassA) not.
+    self assert: (Smalltalk allClasses includesIdentical: jclassA_1) not.
+
+    self assert: (JavaVM classNamed: #'test_unloading_04a_A' definedBy: testClassLoader) isNil.    
+    self assert: (JavaVM classNamed: #'test_unloading_04a_A$1' definedBy: testClassLoader) isNil.
+
+    "Created: / 12-08-2014 / 22:17:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_unloading_04b
+    "
+    1) compile class A with annonymous class A$1
+    2) remove class A$1
+    3) check that A$1 has been removed too.
+    "
+
+    | jclassA jclassA_1 |
+
+    self compileAndRegister:'
+public class test_unloading_04b_A { 
+    public Object foo() {
+        return new Object() { public void bar() { } };
+    }
+}'.
+
+    jclassA := JavaVM classNamed: #'test_unloading_04b_A' definedBy: testClassLoader.
+    jclassA_1 := JavaVM classNamed: #'test_unloading_04b_A$1' definedBy: testClassLoader.
+
+    self assert: (Smalltalk allClasses includesIdentical: jclassA).
+    self assert: (Smalltalk allClasses includesIdentical: jclassA_1).
+
+    jclassA_1 removeFromSystem.
+
+    self assert: (Smalltalk allClasses includesIdentical: jclassA).
+    self assert: (Smalltalk allClasses includesIdentical: jclassA_1) not.
+
+    self assert: (JavaVM classNamed: #'test_unloading_04b_A' definedBy: testClassLoader) notNil.    
+    self assert: (JavaVM classNamed: #'test_unloading_04b_A$1' definedBy: testClassLoader) isNil.
+
+    "Created: / 12-08-2014 / 22:23:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_unloading_04c
+    "
+    1) compile class A with annonymous class A$1
+    2) remove class A then A$1
+    3) check that A$1 has been removed too.
+    "
+
+    | jclassA jclassA_1 |
+
+    self compileAndRegister:'
+public class test_unloading_04c_A { 
+    public Object foo() {
+        return new Object() { public void bar() { } };
+    }
+}'.
+
+    jclassA := JavaVM classNamed: #'test_unloading_04c_A' definedBy: testClassLoader.
+    jclassA_1 := JavaVM classNamed: #'test_unloading_04c_A$1' definedBy: testClassLoader.
+
+    self assert: (Smalltalk allClasses includesIdentical: jclassA).
+    self assert: (Smalltalk allClasses includesIdentical: jclassA_1).
+
+    jclassA removeFromSystem.
+    jclassA_1 removeFromSystem.
+
+    self assert: (Smalltalk allClasses includesIdentical: jclassA) not.
+    self assert: (Smalltalk allClasses includesIdentical: jclassA_1) not.
+
+    self assert: (JavaVM classNamed: #'test_unloading_04c_A' definedBy: testClassLoader) isNil.    
+    self assert: (JavaVM classNamed: #'test_unloading_04c_A$1' definedBy: testClassLoader) isNil.
+
+    "Created: / 12-08-2014 / 22:24:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_unloading_04d
+    "
+    1) compile class A with annonymous class A$1
+    2) remove class A then A$1
+    3) check that A$1 has been removed too.
+    "
+
+    | jclassA jclassA_1 |
+
+    self compileAndRegister:'
+public class test_unloading_04d_A { 
+    public Object foo() {
+        return new Object() { public void bar() { } };
+    }
+}'.
+
+    jclassA := JavaVM classNamed: #'test_unloading_04d_A' definedBy: testClassLoader.
+    jclassA_1 := JavaVM classNamed: #'test_unloading_04d_A$1' definedBy: testClassLoader.
+
+    self assert: (Smalltalk allClasses includesIdentical: jclassA).
+    self assert: (Smalltalk allClasses includesIdentical: jclassA_1).
+
+    jclassA_1 removeFromSystem.
+    jclassA removeFromSystem.
+
+    self assert: (Smalltalk allClasses includesIdentical: jclassA) not.
+    self assert: (Smalltalk allClasses includesIdentical: jclassA_1) not.
+
+    self assert: (JavaVM classNamed: #'test_unloading_04d_A' definedBy: testClassLoader) isNil.    
+    self assert: (JavaVM classNamed: #'test_unloading_04d_A$1' definedBy: testClassLoader) isNil.
+
+    "Created: / 12-08-2014 / 22:25:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaClassReloaderTests class methodsFor:'documentation'!
--- a/libjava.rc	Thu Aug 14 12:55:32 2014 +0100
+++ b/libjava.rc	Thu Aug 14 16:00:39 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", "Mon, 11 Aug 2014 08:34:41 GMT\0"
+      VALUE "ProductDate", "Tue, 12 Aug 2014 21:37:10 GMT\0"
     END
 
   END
--- a/stx_libjava.st	Thu Aug 14 12:55:32 2014 +0100
+++ b/stx_libjava.st	Thu Aug 14 16:00:39 2014 +0100
@@ -308,7 +308,6 @@
         "<className> or (<className> attributes...) in load order"
         GroovyCompiler
         GroovyEvaluator
-        (GroovyEvaluatorTests autoload)
         GroovyLanguage
         GroovySourceFileWriter
         JavaAnnotation
@@ -321,10 +320,8 @@
         JavaBooleanArray
         JavaByte
         JavaByteCodeProcessor
-        (JavaByteCodeProcessorTests autoload)
         JavaClassAccessor
         JavaClassEnvironment
-        (JavaClassLoadingTests autoload)
         JavaClassQuery
         JavaClassReloader
         JavaCodeLibraryOrBundle
@@ -337,26 +334,18 @@
         JavaDescriptor
         JavaError
         JavaExceptionTable
-        (JavaExceptionTests autoload)
         JavaField
         JavaFinalizationRegistry
-        (JavaFreshlyInitializedResource autoload)
         JavaInnerClasses
-        (JavaJUnitTests autoload)
         JavaLanguage
         JavaLibraries
-        (JavaLibrariesResource autoload)
         JavaLocalVariableTable
         JavaLocalVariableTableEntry
         JavaLookup
-        (JavaLookupResolutionAlgorithmTests autoload)
-        (JavaLookupTests autoload)
         JavaMetaclass
         JavaMonitor
-        (JavaMonitorsTests autoload)
         JavaNameAndType2
         JavaNativeMemory
-        (JavaNativeMemoryTests autoload)
         JavaNioSupport
         JavaObject
         JavaObjectDictionary
@@ -364,20 +353,15 @@
         JavaPopUpView
         JavaProcess
         JavaRef2
-        (JavaRefsAndConstantPoolTestCase autoload)
         JavaRelease
-        (JavaReleaseTests autoload)
         JavaResolver
         JavaShort
         JavaSlotIndexCache
         JavaSocket
         JavaSourceCodeCache
         JavaSourceFileWriter
-        (JavaTestCaseProxy autoload)
         JavaTestsLoader
-        (JavaThreadingTests autoload)
         JavaTopView
-        (JavaUTF8Tests autoload)
         JavaUnresolvedCompilationError
         JavaUnresolvedConstant
         JavaUtilities
@@ -393,7 +377,6 @@
         SmalltalkAppletStub
         #'stx_libjava'
         GroovyMetaclass
-        (JUnitTestCaseProxy autoload)
         Java
         JavaAnnotationArrayValue
         JavaAnnotationClassValue
@@ -402,15 +385,12 @@
         JavaAnnotationPrimitiveValue
         JavaBehavior
         JavaByteCodeDisassembler
-        (JavaByteCodeDisassemblerTests autoload)
         JavaByteCodeEnumerator
         JavaByteCodeProcessorAdapter
         JavaClassAnnotationContainer
         JavaClassMemberRef2
         JavaClassReader
-        (JavaClassReaderTests autoload)
         JavaClassRef2
-        (JavaClassRefTests autoload)
         JavaClassRegistry
         JavaCodeBundle
         JavaCodeLibrary
@@ -418,23 +398,17 @@
         JavaFieldAnnotationContainer
         JavaFieldDescriptor
         JavaFieldDescriptorWithUnionType
-        (JavaFieldRefTests autoload)
         (JavaInitializedResource autoload)
-        (JavaInterfaceMethodRefTests autoload)
         JavaInvalidRefError
         JavaInvokeDynamic2
         JavaMethod
         JavaMethodAnnotationContainer
         JavaMethodDescriptor
         JavaMethodHandle2
-        (JavaMethodRefTests autoload)
         JavaMethodType2
         JavaMirror
         #'JavaNativeMethodImpl_OpenJDK6'
-        (JavaRefMock autoload)
-        (JavaRuntimeConstantPoolTests autoload)
         JavaStringRef2
-        (JavaTestsResource autoload)
         JavaUnhandledExceptionError
         JavaUnhandledThreadDeathError
         JavaUnresolvedClassConstant
@@ -444,7 +418,6 @@
         ProxyMethodGuardNode
         ProxyMethodInvocationNode
         ProxyMethodJavaFieldAccessor
-        (TestletTestCaseProxy autoload)
         JavaAlienMirror
         JavaArrayMirror
         JavaByteCodePreresolver
@@ -474,6 +447,33 @@
         ProxyMethodJavaTypeCheckNode
         JavaNativeMethod
         #'JavaNativeMethodImpl_OracleJDK8'
+        (GroovyEvaluatorTests autoload)
+        (JUnitTestCaseProxy autoload)
+        (JavaByteCodeDisassemblerTests autoload)
+        (JavaByteCodeProcessorTests autoload)
+        (JavaClassLoadingTests autoload)
+        (JavaClassReaderTests autoload)
+        (JavaClassRefTests autoload)
+        (JavaExceptionTests autoload)
+        (JavaFieldRefTests autoload)
+        (JavaFreshlyInitializedResource autoload)
+        (JavaInterfaceMethodRefTests autoload)
+        (JavaJUnitTests autoload)
+        (JavaLibrariesResource autoload)
+        (JavaLookupResolutionAlgorithmTests autoload)
+        (JavaLookupTests autoload)
+        (JavaMethodRefTests autoload)
+        (JavaMonitorsTests autoload)
+        (JavaNativeMemoryTests autoload)
+        (JavaRefMock autoload)
+        (JavaRefsAndConstantPoolTestCase autoload)
+        (JavaReleaseTests autoload)
+        (JavaRuntimeConstantPoolTests autoload)
+        (JavaTestCaseProxy autoload)
+        (JavaTestsResource autoload)
+        (JavaThreadingTests autoload)
+        (JavaUTF8Tests autoload)
+        (TestletTestCaseProxy autoload)
     )
 !
 
--- a/tools/JavaAbstractLexicalHighlighter.st	Thu Aug 14 12:55:32 2014 +0100
+++ b/tools/JavaAbstractLexicalHighlighter.st	Thu Aug 14 16:00:39 2014 +0100
@@ -116,3 +116,10 @@
     "Modified: / 25-06-2014 / 12:02:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!JavaAbstractLexicalHighlighter class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/tools/abbrev.stc	Thu Aug 14 12:55:32 2014 +0100
+++ b/tools/abbrev.stc	Thu Aug 14 16:00:39 2014 +0100
@@ -5,7 +5,6 @@
 JavaCodeBundleEditor JavaCodeBundleEditor stx:libjava/tools 'Languages-Java-Tools' 1
 JavaCodeLibraryEditor JavaCodeLibraryEditor stx:libjava/tools 'Languages-Java-Tools' 1
 JavaCompiler JavaCompiler stx:libjava/tools 'Languages-Java-Support-Compiling' 0
-JavaCompilerTests JavaCompilerTests stx:libjava/tools 'Languages-Java-Tests-Compiling' 1
 JavaLintAnnotation JavaLintAnnotation stx:libjava/tools 'Languages-Java-Tools-Editor-Lint' 0
 JavaLintHighlighter JavaLintHighlighter stx:libjava/tools 'Languages-Java-Tools-Editor-Lint' 0
 JavaLintPopupWindow JavaLintPopupWindow stx:libjava/tools 'Languages-Java-Tools-Editor-Lint' 1
@@ -25,3 +24,4 @@
 GroovyScanner GroovyScanner stx:libjava/tools 'Languages-Groovy-Tools-Source' 3
 JavaLexicalHighlighter JavaLexicalHighlighter stx:libjava/tools 'Languages-Java-Tools-Source' 0
 GroovySourceHighlighter GroovySourceHighlighter stx:libjava/tools 'Languages-Groovy-Tools-Source' 0
+JavaCompilerTests JavaCompilerTests stx:libjava/tools 'Languages-Java-Tests-Compiling' 1
--- a/tools/stx_libjava_tools.st	Thu Aug 14 12:55:32 2014 +0100
+++ b/tools/stx_libjava_tools.st	Thu Aug 14 16:00:39 2014 +0100
@@ -32,7 +32,7 @@
      by searching along the inheritance chain of all of my classes."
 
     ^ #(
-        #'stx:libbasic'    "ConfigurableFeatures - extended"
+        #'stx:libbasic'    "Autoload - superclass of JavaCompilerTests"
         #'stx:libjava'    "JavaObject - extended"
         #'stx:libtool'    "AbstractSettingsApplication - superclass of JavaSettingsApplication"
         #'stx:libview'    "DisplaySurface - superclass of JavaListInspectorView"
@@ -127,7 +127,6 @@
         JavaCodeBundleEditor
         JavaCodeLibraryEditor
         JavaCompiler
-        (JavaCompilerTests autoload)
         JavaLintAnnotation
         JavaLintHighlighter
         JavaLintPopupWindow
@@ -147,6 +146,7 @@
         GroovyScanner
         JavaLexicalHighlighter
         GroovySourceHighlighter
+        (JavaCompilerTests autoload)
     )
 !
 
--- a/tools/tools.rc	Thu Aug 14 12:55:32 2014 +0100
+++ b/tools/tools.rc	Thu Aug 14 16:00:39 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", "Mon, 11 Aug 2014 08:34:47 GMT\0"
+      VALUE "ProductDate", "Tue, 12 Aug 2014 21:37:17 GMT\0"
     END
 
   END