Tools__ObjectModuleInformation.st
changeset 2773 a3e5bbb440f4
parent 2763 c36ead4db5bc
child 2778 6d59e67bcd8a
equal deleted inserted replaced
2772:647f186ccb22 2773:a3e5bbb440f4
   984 
   984 
   985     "Modified: / 05-10-2007 / 13:03:56 / cg"
   985     "Modified: / 05-10-2007 / 13:03:56 / cg"
   986 !
   986 !
   987 
   987 
   988 showInfoForNonClassLib:sel
   988 showInfoForNonClassLib:sel
   989     " selected a method, cObject or unknown "
   989     "selected a method, cObject or unknown"
   990 
   990 
   991     |module fileName list entry|
   991     |module fileName list entry|
   992 
   992 
   993     sel isNil ifTrue:[
   993     sel isNil ifTrue:[
   994         self table1VisibleHolder value:false.
   994         self table1VisibleHolder value:false.
  1000     fileName := module pathName.
  1000     fileName := module pathName.
  1001 
  1001 
  1002     self canUnloadSelectedDLL value:true.
  1002     self canUnloadSelectedDLL value:true.
  1003 
  1003 
  1004     module isMethodHandle ifTrue:[
  1004     module isMethodHandle ifTrue:[
  1005         |method nm entry1 entry2 entry3|
  1005         |method nm entry entries|
       
  1006 
       
  1007         self canUnloadSelectedModule value:self readOnly not.
  1006 
  1008 
  1007         self middleLabelHolder value:'Compiled Method:'.
  1009         self middleLabelHolder value:'Compiled Method:'.
  1008 
  1010 
  1009         (method := module method) isNil ifTrue:[
  1011         (method := module method) isNil ifTrue:[
  1010             nm := '** removed **'.
  1012             nm := '** removed **'.
  1022 "/                                      ].
  1024 "/                                      ].
  1023 "/            listView1 middleButtonMenu:menu.
  1025 "/            listView1 middleButtonMenu:menu.
  1024 
  1026 
  1025             nm := (method whoString) colorizeAllWith:Color blue.
  1027             nm := (method whoString) colorizeAllWith:Color blue.
  1026         ].
  1028         ].
  1027         entry1 := InfoRow new.
  1029         entries := OrderedCollection new.
  1028         entry1 name:'Compiled method'; value:nm.
  1030         entry := InfoRow new.
  1029 
  1031         entry name:'Compiled method'; value:nm.
  1030         entry2 := InfoRow new.
  1032         entries add:entry.
  1031         entry2 name:'Path'; value:fileName.
  1033 
  1032 
  1034         entry := InfoRow new.
  1033         entry3 := InfoRow new.
  1035         entry name:'Path'; value:fileName.
  1034         entry3 name:'Address'; value:('(16r) ' , (method code address hexPrintString leftPaddedTo:8 with:$0)).
  1036         entries add:entry.
  1035 
  1037 
  1036         self infoTable2ListHolder value:(Array with:entry1 with:entry2 with:entry3).
  1038         (method notNil and:[method code notNil]) ifTrue:[
       
  1039             entry := InfoRow new.
       
  1040             entry name:'Address'; value:('(16r) ' , (method code address hexPrintString leftPaddedTo:8 with:$0)).
       
  1041             entries add:entry.
       
  1042         ].
       
  1043 
       
  1044         self infoTable2ListHolder value:entries.
  1037         self table1VisibleHolder value:false.
  1045         self table1VisibleHolder value:false.
  1038         self table2VisibleHolder value:true.
  1046         self table2VisibleHolder value:true.
  1039         ^ self.
  1047         ^ self.
  1040     ].
  1048     ].
  1041 
  1049 
  1309     ].
  1317     ].
  1310     ^ nil
  1318     ^ nil
  1311 !
  1319 !
  1312 
  1320 
  1313 unloadSelectedModule
  1321 unloadSelectedModule
  1314     self unloadSelectedModuleRemoveClasses:false
  1322     self unloadSelectedModuleRemoveConnectedObjects:false
  1315 !
  1323 !
  1316 
  1324 
  1317 unloadSelectedModuleAndRemoveClasses
  1325 unloadSelectedModuleAndRemoveClasses
  1318     self unloadSelectedModuleRemoveClasses:true
  1326     self unloadSelectedModuleRemoveConnectedObjects:true
  1319 !
  1327 !
  1320 
  1328 
  1321 unloadSelectedModuleRemoveClasses:doRemoveClasses
  1329 unloadSelectedModuleRemoveConnectedObjects:doRemoveClasses 
  1322     |module dll|
  1330     |module handle|
  1323 
  1331 
  1324     module := allModules at:self selectedModuleIndex ifAbsent:nil.
  1332     module := allModules at:self selectedModuleIndex ifAbsent:nil.
  1325     module isNil ifTrue:[
       
  1326         dll := objectHandles at:self selectedModuleIndex ifAbsent:nil.
       
  1327     ].
       
  1328     module notNil ifTrue:[
  1333     module notNil ifTrue:[
  1329         (Dialog 
  1334         (Dialog 
  1330             confirm:'This is a possibly dangerous operation, as the DLL is unloaded without caring for 
  1335             confirm:'This is a possibly dangerous operation, as the DLL is unloaded without caring for 
  1331 proper package-deinstallation procedures. Please use this only in repair situations and when the 
  1336 proper package-deinstallation procedures. Please use this only in repair situations and when the 
  1332 regular unloadPackage operation fails.
  1337 regular unloadPackage operation fails.
  1333 
  1338 
  1334 Continue ?')
  1339 Continue ?') 
  1335         ifFalse:[
  1340                 ifFalse:[ ^ self ].
  1336             ^ self  
  1341     ].
  1337         ].
  1342     handle := objectHandles at:self selectedModuleIndex ifAbsent:nil.
  1338     ].
  1343     handle notNil ifTrue:[
  1339 
  1344         self 
  1340     self withWaitCursorDo:[
  1345             withWaitCursorDo:[
  1341         |info idx handle pathName|
  1346                 self selectedModuleIndexHolder value:nil.
  1342 
  1347                 doRemoveClasses ifTrue:[
  1343         info := self selectedModuleInfo.
  1348                     handle removeConnectedObjects.
  1344         handle := objectHandles at:(self selectedModuleIndex).
  1349                 ].
  1345         self selectedModuleIndexHolder value:nil.
  1350                 handle unload.
  1346 
  1351                 self updateModuleList.
  1347         info isNil ifTrue:[
  1352             ].
  1348             "/ selected a method/dll
       
  1349             "/ idx := idx - allModules size.
       
  1350             pathName := handle pathName.
       
  1351         ] ifFalse:[
       
  1352             "/ selected a package
       
  1353             pathName := info pathName.
       
  1354         ].
       
  1355         pathName notNil ifTrue:[
       
  1356             doRemoveClasses ifTrue:[
       
  1357                 ObjectFileLoader unloadObjectFileAndRemoveClasses:pathName.
       
  1358             ] ifFalse:[
       
  1359                 ObjectFileLoader unloadObjectFile:pathName.
       
  1360             ]
       
  1361         ].
       
  1362         self updateModuleList.
       
  1363     ]
  1353     ]
  1364 !
  1354 !
  1365 
  1355 
  1366 unloadSelectedModulesPackage
  1356 unloadSelectedModulesPackage
  1367     |definitionClass|
  1357     |definitionClass|