JavaClassReader.st
branchcvs_MAIN
changeset 3655 777b31a805e9
parent 3654 85dcb65aec35
child 3665 a6497adefa64
equal deleted inserted replaced
3654:85dcb65aec35 3655:777b31a805e9
    67 
    67 
    68     "Created: / 13-11-2014 / 12:13:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    68     "Created: / 13-11-2014 / 12:13:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    69 !
    69 !
    70 
    70 
    71 initialize
    71 initialize
    72     InvalidClassFormatSignal := Signal new mayProceed:true.
    72     self initializeSignals.
    73     InvalidClassFormatSignal notifierString:'class load failure'.
       
    74     InvalidClassFormatSignal nameClass:self message:#invalidClassFormatSignal.
       
    75 
       
    76     NoClassPathDefinedSignal := Signal new mayProceed:true.
       
    77     NoClassPathDefinedSignal notifierString:'no class path defined'.
       
    78     NoClassPathDefinedSignal nameClass:self message:#noClassPathDefinedSignal.
       
    79 
    73 
    80     Verbose := false.
    74     Verbose := false.
    81     Silent := true.
    75     Silent := true.
    82     AbsolutelySilent := false.
    76     AbsolutelySilent := false.
    83 
    77 
    84     "/ Verbose := true.
    78     "/ Verbose := true.
    85     "/ Silent := false.
    79     "/ Silent := false.
    86 
    80 
    87     "/LazyClassLoading := false.
       
    88 
       
    89     LazyClassLoading := true.
    81     LazyClassLoading := true.
    90     ClassLoaderQuerySignal := QuerySignal new.
    82     "/ LazyClassLoading := false.
    91     ClassLoaderQuerySignal defaultAnswer:[ JavaVM systemClassLoader ].
    83     
    92     self initializeArchiveCache.
    84     self initializeArchiveCache.
    93     JavaArchiveCacheLock := RecursionLock new.
    85     JavaArchiveCacheLock := RecursionLock new.
    94     LastJavaArchiveLock := RecursionLock new.
    86     LastJavaArchiveLock := RecursionLock new.
    95     AnnotationsVerbose := false.
    87     AnnotationsVerbose := false.
    96     MaxContextSize := 0.
    88     MaxContextSize := 0.
   124      "Constant pool strings are interned to save memory
   116      "Constant pool strings are interned to save memory
   125      and kept in InternedStrings variable"
   117      and kept in InternedStrings variable"
   126     InternedStrings := Set new
   118     InternedStrings := Set new
   127 
   119 
   128     "Modified (comment): / 13-11-2014 / 12:12:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   120     "Modified (comment): / 13-11-2014 / 12:12:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   121 !
       
   122 
       
   123 initializeSignals
       
   124     InvalidClassFormatSignal := Signal new mayProceed:true.
       
   125     InvalidClassFormatSignal notifierString:'class load failure'.
       
   126     InvalidClassFormatSignal nameClass:self message:#invalidClassFormatSignal.
       
   127 
       
   128     NoClassPathDefinedSignal := Signal new mayProceed:true.
       
   129     NoClassPathDefinedSignal notifierString:'no class path defined'.
       
   130     NoClassPathDefinedSignal nameClass:self message:#noClassPathDefinedSignal.
       
   131 
       
   132     ClassLoaderQuerySignal := QuerySignal new.
       
   133     ClassLoaderQuerySignal defaultAnswer:[ JavaVM systemClassLoader ].
       
   134 
       
   135 
       
   136     "Modified: / 27-01-1998 / 17:54:23 / cg"
   129 ! !
   137 ! !
   130 
   138 
   131 !JavaClassReader class methodsFor:'Signal constants'!
   139 !JavaClassReader class methodsFor:'Signal constants'!
   132 
   140 
   133 classLoaderQuerySignal
   141 classLoaderQuerySignal
   270 
   278 
   271     class isNil ifTrue:[
   279     class isNil ifTrue:[
   272         JavaVM booted ifFalse:[
   280         JavaVM booted ifFalse:[
   273             ^nil
   281             ^nil
   274         ].
   282         ].
   275         JavaClassReader classLoaderQuerySignal answer: JavaVM systemClassLoader do:[
   283         ClassLoaderQuerySignal answer: JavaVM systemClassLoader do:[
   276             class := self
   284             class := self
   277                 readClass: className ignoring: classesBeingLoadedOrNil
   285                 readClass: className ignoring: classesBeingLoadedOrNil
   278                 classPath: Java classPath.
   286                 classPath: Java classPath.
   279         ].
   287         ].
   280     ].
   288     ].
   342 
   350 
   343 readStream: stream ignoring: classesBeingLoaded
   351 readStream: stream ignoring: classesBeingLoaded
   344     "reads a class from aStream and returns it.
   352     "reads a class from aStream and returns it.
   345      The JavaClass is not installed as global"
   353      The JavaClass is not installed as global"
   346 
   354 
   347     ^self readStream: stream loader: self classLoaderQuerySignal query ignoring: classesBeingLoaded
   355     ^self readStream: stream loader: ClassLoaderQuerySignal query ignoring: classesBeingLoaded
   348 
   356 
   349     "Modified: / 30-03-1998 / 18:14:40 / cg"
   357     "Modified: / 30-03-1998 / 18:14:40 / cg"
   350     "Modified: / 09-05-2011 / 23:15:30 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
   358     "Modified: / 09-05-2011 / 23:15:30 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
   351     "Modified: / 02-05-2013 / 09:51:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   359     "Modified: / 02-05-2013 / 09:51:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   352 !
   360 !
   686         classBeingLoaded setName: thisClassName asSymbol.
   694         classBeingLoaded setName: thisClassName asSymbol.
   687     ] ifFalse: [
   695     ] ifFalse: [
   688         "/ a java class
   696         "/ a java class
   689         Class withoutUpdatingChangesDo:[
   697         Class withoutUpdatingChangesDo:[
   690             classBeingLoaded := JavaClass binaryName: thisClassName numStatic: nStatic.
   698             classBeingLoaded := JavaClass binaryName: thisClassName numStatic: nStatic.
   691             classBeingLoaded classLoader: self class classLoaderQuerySignal query.
   699             classBeingLoaded classLoader: ClassLoaderQuerySignal query.
   692             fields := fields select: [:f | f isStatic not ].
   700             fields := fields select: [:f | f isStatic not ].
   693             JavaClass setInstanceVariableStringFromFields: staticFields
   701             JavaClass setInstanceVariableStringFromFields: staticFields
   694                 in: classBeingLoaded class.
   702                 in: classBeingLoaded class.
   695             classBeingLoaded setStaticFields: staticFields.
   703             classBeingLoaded setStaticFields: staticFields.
   696             classBeingLoaded setAccessFlags: access_flags.
   704             classBeingLoaded setAccessFlags: access_flags.
   757 readStream:aStream ignoring:classesBeingLoaded
   765 readStream:aStream ignoring:classesBeingLoaded
   758     <resource: #obsolete>
   766     <resource: #obsolete>
   759     "reads a class from aStream and returns it.
   767     "reads a class from aStream and returns it.
   760      The JavaClass is not installed as global"
   768      The JavaClass is not installed as global"
   761 
   769 
   762     ^self readStream:aStream loader: self class classLoaderQuerySignal query ignoring:classesBeingLoaded
   770     ^self readStream:aStream loader: ClassLoaderQuerySignal query ignoring:classesBeingLoaded
   763 
   771 
   764 
   772 
   765     "
   773     "
   766      JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
   774      JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
   767     "
   775     "