--- 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