JavaClassReloader.st
changeset 3067 4bbacafb9592
parent 2900 894e894aa511
child 3157 3aa14b90dacd
equal deleted inserted replaced
3066:8c0339f8c175 3067:4bbacafb9592
   192     (JavaVM classForName:'stx.libjava.tools.environment.Environment') shared cleanup.    
   192     (JavaVM classForName:'stx.libjava.tools.environment.Environment') shared cleanup.    
   193 
   193 
   194     oldClass subclassesDo:[:cls | 
   194     oldClass subclassesDo:[:cls | 
   195         JavaVM registry unregisterClass: cls 
   195         JavaVM registry unregisterClass: cls 
   196     ].
   196     ].
   197     JavaVM registry classesDo:[:cls|        
   197     JavaVM registry allClassesDo:[:cls|        
   198         "/ JV: Q: Should we remove all users of the interface? Let's do it, but not
   198         "/ JV: Q: Should we remove all users of the interface? Let's do it, but not
   199         "/        sure if that's necessary/desirable
   199         "/        sure if that's necessary/desirable
   200         | ifaces |
   200         | ifaces |
   201 
   201 
   202         ifaces := cls getInterfaces.
   202         ifaces := cls getInterfaces.
   214         ].
   214         ].
   215         cls constantPool invalidateForClass: oldClass binaryName
   215         cls constantPool invalidateForClass: oldClass binaryName
   216     ]
   216     ]
   217 
   217 
   218     "Created: / 14-09-2013 / 15:53:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   218     "Created: / 14-09-2013 / 15:53:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   219     "Modified: / 14-10-2013 / 23:59:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   219     "Modified: / 09-04-2014 / 18:43:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   220 ! !
   220 ! !
   221 
   221 
   222 !JavaClassReloader methodsFor:'reloading-requests'!
   222 !JavaClassReloader methodsFor:'reloading-requests'!
   223 
   223 
   224 requestRecompile:aJavaClass
   224 requestRecompile:aJavaClass
   268 invalidate
   268 invalidate
   269 
   269 
   270     | anyInvalidated |
   270     | anyInvalidated |
   271 
   271 
   272     anyInvalidated := false.
   272     anyInvalidated := false.
   273     JavaVM registry classesDo:[:class|
   273     JavaVM registry allClassesDo:[:class|
   274         anyInvalidated := (self invalidateClass: class) | anyInvalidated.
   274         anyInvalidated := (self invalidateClass: class) | anyInvalidated.
   275     ].
   275     ].
   276     anyInvalidated ifTrue:[ObjectMemory flushCaches].
   276     anyInvalidated ifTrue:[ObjectMemory flushCaches].
   277 
   277 
   278     "
   278     "
   284     "
   284     "
   285     "/JavaCompiler recompileErroneousClassesReferringTo: newClass ignoring: oldClass.
   285     "/JavaCompiler recompileErroneousClassesReferringTo: newClass ignoring: oldClass.
   286 
   286 
   287     "Created: / 21-02-2012 / 09:47:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   287     "Created: / 21-02-2012 / 09:47:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   288     "Modified: / 02-10-2013 / 23:27:59 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
   288     "Modified: / 02-10-2013 / 23:27:59 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
   289     "Modified: / 17-10-2013 / 09:53:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   289     "Modified: / 09-04-2014 / 18:43:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   290 !
   290 !
   291 
   291 
   292 invalidateClass: javaClass 
   292 invalidateClass: javaClass 
   293     ^ javaClass ~~ oldClass and:[javaClass constantPool invalidateForClass: oldClass binaryName]
   293     ^ javaClass ~~ oldClass and:[javaClass constantPool invalidateForClass: oldClass binaryName]
   294 
   294 
   543 ! !
   543 ! !
   544 
   544 
   545 !JavaClassReloader::SingleClassReloader methodsFor:'reloading-requests'!
   545 !JavaClassReloader::SingleClassReloader methodsFor:'reloading-requests'!
   546 
   546 
   547 requestRecompileSendersOf: givenMethod
   547 requestRecompileSendersOf: givenMethod
   548     JavaVM registry classesDo:[:cls|
   548     JavaVM registry allClassesDo:[:cls|
   549         | recompile |
   549         | recompile |
   550         recompile := cls constantPool contains:[:entry |
   550         recompile := cls constantPool contains:[:entry |
   551                         entry isJavaRef
   551                         entry isJavaRef
   552                             and:[ entry isJavaMethodRef
   552                             and:[ entry isJavaMethodRef
   553                             and:[entry classRef name = givenMethod javaClass binaryName
   553                             and:[entry classRef name = givenMethod javaClass binaryName
   556             self requestRecompile: cls.    
   556             self requestRecompile: cls.    
   557         ].
   557         ].
   558     ].
   558     ].
   559 
   559 
   560     "Created: / 15-10-2013 / 01:52:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   560     "Created: / 15-10-2013 / 01:52:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   561     "Modified: / 09-04-2014 / 18:43:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   561 ! !
   562 ! !
   562 
   563 
   563 !JavaClassReloader::SingleClassReloader::FieldMapping class methodsFor:'instance creation'!
   564 !JavaClassReloader::SingleClassReloader::FieldMapping class methodsFor:'instance creation'!
   564 
   565 
   565 old: old new:new
   566 old: old new:new