resolveClass native resolves whole CP, for even more eager resolving, run JavaVM enableEagerResolving :)
--- 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