.
--- a/BrowserView.st Sun Jul 23 05:19:48 1995 +0200
+++ b/BrowserView.st Thu Aug 03 03:38:05 1995 +0200
@@ -29,7 +29,7 @@
COPYRIGHT (c) 1989 by Claus Gittinger
All Rights Reserved
-$Header: /cvs/stx/stx/libtool/BrowserView.st,v 1.12 1995-07-23 03:18:32 claus Exp $
+$Header: /cvs/stx/stx/libtool/BrowserView.st,v 1.13 1995-08-03 01:37:22 claus Exp $
'!
!BrowserView class methodsFor:'documentation'!
@@ -50,7 +50,7 @@
version
"
-$Header: /cvs/stx/stx/libtool/BrowserView.st,v 1.12 1995-07-23 03:18:32 claus Exp $
+$Header: /cvs/stx/stx/libtool/BrowserView.st,v 1.13 1995-08-03 01:37:22 claus Exp $
"
!
@@ -5081,7 +5081,7 @@
((values size == 1)
or:[classes size == 1 and:[classes first == UndefinedObject]]) ifTrue:[
values size == 1 ifTrue:[value := values first].
- (value isNumber or:[value isKindOf:String]) ifTrue:[
+ (value isNumber or:[value isString]) ifTrue:[
msg := msg , 'is always the same:\\ ' ,
value class name , ' (' , value storeString , ')'.
] ifFalse:[
--- a/BrwsrView.st Sun Jul 23 05:19:48 1995 +0200
+++ b/BrwsrView.st Thu Aug 03 03:38:05 1995 +0200
@@ -29,7 +29,7 @@
COPYRIGHT (c) 1989 by Claus Gittinger
All Rights Reserved
-$Header: /cvs/stx/stx/libtool/Attic/BrwsrView.st,v 1.12 1995-07-23 03:18:32 claus Exp $
+$Header: /cvs/stx/stx/libtool/Attic/BrwsrView.st,v 1.13 1995-08-03 01:37:22 claus Exp $
'!
!BrowserView class methodsFor:'documentation'!
@@ -50,7 +50,7 @@
version
"
-$Header: /cvs/stx/stx/libtool/Attic/BrwsrView.st,v 1.12 1995-07-23 03:18:32 claus Exp $
+$Header: /cvs/stx/stx/libtool/Attic/BrwsrView.st,v 1.13 1995-08-03 01:37:22 claus Exp $
"
!
@@ -5081,7 +5081,7 @@
((values size == 1)
or:[classes size == 1 and:[classes first == UndefinedObject]]) ifTrue:[
values size == 1 ifTrue:[value := values first].
- (value isNumber or:[value isKindOf:String]) ifTrue:[
+ (value isNumber or:[value isString]) ifTrue:[
msg := msg , 'is always the same:\\ ' ,
value class name , ' (' , value storeString , ')'.
] ifFalse:[
--- a/Launcher.st Sun Jul 23 05:19:48 1995 +0200
+++ b/Launcher.st Thu Aug 03 03:38:05 1995 +0200
@@ -37,7 +37,7 @@
version
"
-$Header: /cvs/stx/stx/libtool/Launcher.st,v 1.19 1995-07-23 03:19:33 claus Exp $
+$Header: /cvs/stx/stx/libtool/Launcher.st,v 1.20 1995-08-03 01:37:59 claus Exp $
"
!
@@ -1020,7 +1020,7 @@
macroTextView origin:0.0@0.6 corner:1.0@1.0.
y := box yPosition.
- box addAbortButton; addOkButton.
+ box "addAbortButton;" addOkButton.
macroTextView topInset:(l preferredExtent y).
macroTextView bottomInset:(box preferredExtent y - y).
--- a/MemMonitor.st Sun Jul 23 05:19:48 1995 +0200
+++ b/MemMonitor.st Thu Aug 03 03:38:05 1995 +0200
@@ -25,7 +25,7 @@
COPYRIGHT (c) 1991 by Claus Gittinger
All Rights Reserved
-$Header: /cvs/stx/stx/libtool/Attic/MemMonitor.st,v 1.17 1995-07-23 03:19:24 claus Exp $
+$Header: /cvs/stx/stx/libtool/Attic/MemMonitor.st,v 1.18 1995-08-03 01:37:52 claus Exp $
'!
!MemoryMonitor class methodsFor:'documentation'!
@@ -46,7 +46,7 @@
version
"
-$Header: /cvs/stx/stx/libtool/Attic/MemMonitor.st,v 1.17 1995-07-23 03:19:24 claus Exp $
+$Header: /cvs/stx/stx/libtool/Attic/MemMonitor.st,v 1.18 1995-08-03 01:37:52 claus Exp $
"
!
@@ -75,6 +75,8 @@
I incremental GC state
+ weak number of weak objects
+
rem size of rememberedSet
minsc: percent of newspace remaining after scavenge (worst case)
@@ -100,7 +102,7 @@
!MemoryMonitor class methodsFor:'defaults'!
defaultExtent
- ^ (200 @ 250)
+ ^ (200 @ 280)
!
defaultLabel
@@ -120,14 +122,15 @@
updateDisplay
"update picture; trigger next update"
- |total oldSpaceUsed newSpaceUsed freeMem
+ |total oldSpaceUsed newSpaceUsed freeMem oldSpaceSize
gWidth shift scaleChange margin mustWait|
shown ifTrue:[
oldSpaceUsed := ObjectMemory oldSpaceUsed + ObjectMemory symSpaceUsed.
newSpaceUsed := ObjectMemory newSpaceUsed.
- freeMem := ObjectMemory freeListSpace.
- total := oldSpaceUsed + newSpaceUsed.
+ freeMem := ObjectMemory freeListSpace + (ObjectMemory oldSpaceSize - ObjectMemory oldSpaceUsed).
+ oldSpaceSize := ObjectMemory oldSpaceSize + ObjectMemory symSpaceSize.
+ total := oldSpaceSize + ObjectMemory newSpaceSize.
scaleChange := false.
@@ -140,7 +143,7 @@
scaleChange := true
].
- oldData at:updateIndex put:oldSpaceUsed.
+ oldData at:updateIndex put:oldSpaceSize. "/ oldSpaceUsed.
newData at:updateIndex put:newSpaceUsed.
freeData at:updateIndex put:freeMem.
updateIndex := updateIndex + 1.
@@ -181,7 +184,7 @@
self updateLineX:(updateIndex - 1 + org - 1)
total:total
- old:oldSpaceUsed
+ old:oldSpaceSize "/ oldSpaceUsed
new:newSpaceUsed
free:freeMem.
@@ -250,25 +253,24 @@
]
!
-updateLineX:x total:total old:oldSpaceUsed new:newSpaceUsed free:freeMem
- |hNew hOld hFree y1 y2|
+updateLineX:x total:total old:oldSpaceSize new:newSpaceUsed free:freeMem
+ |hNew hOld hFree y1 y2 y3|
hNew := (newSpaceUsed * scale) asInteger.
- hOld := (oldSpaceUsed * scale) // 2.
- hFree := (freeMem * scale) asInteger.
+ hOld := (oldSpaceSize * scale) // 2.
+ hFree := (freeMem * scale) // 2.
y1 := height - 1.
+
y2 := y1 - hOld.
self paint:oldColor.
self displayLineFromX:x y:y1 toX:x y:y2.
- y1 := y2.
- y2 := y1 - hFree.
+ y3 := y1 - hFree.
self paint:freeColor.
- self displayLineFromX:x y:y1 toX:x y:y2.
+ self displayLineFromX:x y:y1 toX:x y:y3.
- y1 := y2.
- y2 := y1 - hNew.
+ y1 := y2 - hNew.
self paint:newColor.
self displayLineFromX:x y:y1 toX:x y:y2.
!
@@ -287,6 +289,7 @@
t current tenure age
I IGC state
rem remembered set size
+ lrem lifo remembered set size
count of scavenges
last scavenge survivor rate
"
@@ -309,7 +312,7 @@
fontHeight := font height + font descent.
half := height // 2 + font descent.
- y := half - (fontHeight * 4).
+ y := half - (fontHeight * 5).
total ~~ prevTotal ifTrue:[
((total - freeMem) < minTotal) ifTrue:[
@@ -374,9 +377,17 @@
self displayOpaqueString:s x:0 y:y.
y := y + fontHeight.
+ s := 'weak: ' , (ObjectMemory numberOfWeakObjects printStringLeftPaddedTo:4).
+ self displayOpaqueString:s x:0 y:y.
+
+ y := y + fontHeight.
s := 'rem: ' , (ObjectMemory rememberedSetSize printStringLeftPaddedTo:5).
self displayOpaqueString:s x:0 y:y.
+ y := y + fontHeight.
+ s := 'lrem: ' , (ObjectMemory lifoRememberedSetSize printStringLeftPaddedTo:4 ifLarger:['****']).
+ self displayOpaqueString:s x:0 y:y.
+
"/ does no longer make sense to show ....
"/ y := y + fontHeight.
"/ ObjectMemory runsSingleOldSpace ifTrue:[
@@ -482,6 +493,7 @@
labels := #(
'scavenge'
'tenure'
+ 'incremental collect'
'-'
'cleanup memory'
'-'
@@ -490,6 +502,7 @@
selectors := #(
scavenge
tenure
+ incrementalCollect
nil
cleanupMemory
nil
@@ -565,7 +578,7 @@
viewBackground := Black.
device hasColors ifTrue:[
- newColor := Color yellow.
+ newColor := Color orange. "/ yellow.
freeColor := Color green.
oldColor := Color white.
] ifFalse:[
@@ -628,6 +641,12 @@
ObjectMemory markAndSweep
!
+incrementalCollect
+ [
+ [ObjectMemory gcStep] whileFalse:[(Delay forMilliseconds:1) wait]
+ ] forkAt:Processor highestPriority
+!
+
backgroundCollect
[ObjectMemory incrementalGC] forkAt:5
! !
--- a/MemoryMonitor.st Sun Jul 23 05:19:48 1995 +0200
+++ b/MemoryMonitor.st Thu Aug 03 03:38:05 1995 +0200
@@ -25,7 +25,7 @@
COPYRIGHT (c) 1991 by Claus Gittinger
All Rights Reserved
-$Header: /cvs/stx/stx/libtool/MemoryMonitor.st,v 1.17 1995-07-23 03:19:24 claus Exp $
+$Header: /cvs/stx/stx/libtool/MemoryMonitor.st,v 1.18 1995-08-03 01:37:52 claus Exp $
'!
!MemoryMonitor class methodsFor:'documentation'!
@@ -46,7 +46,7 @@
version
"
-$Header: /cvs/stx/stx/libtool/MemoryMonitor.st,v 1.17 1995-07-23 03:19:24 claus Exp $
+$Header: /cvs/stx/stx/libtool/MemoryMonitor.st,v 1.18 1995-08-03 01:37:52 claus Exp $
"
!
@@ -75,6 +75,8 @@
I incremental GC state
+ weak number of weak objects
+
rem size of rememberedSet
minsc: percent of newspace remaining after scavenge (worst case)
@@ -100,7 +102,7 @@
!MemoryMonitor class methodsFor:'defaults'!
defaultExtent
- ^ (200 @ 250)
+ ^ (200 @ 280)
!
defaultLabel
@@ -120,14 +122,15 @@
updateDisplay
"update picture; trigger next update"
- |total oldSpaceUsed newSpaceUsed freeMem
+ |total oldSpaceUsed newSpaceUsed freeMem oldSpaceSize
gWidth shift scaleChange margin mustWait|
shown ifTrue:[
oldSpaceUsed := ObjectMemory oldSpaceUsed + ObjectMemory symSpaceUsed.
newSpaceUsed := ObjectMemory newSpaceUsed.
- freeMem := ObjectMemory freeListSpace.
- total := oldSpaceUsed + newSpaceUsed.
+ freeMem := ObjectMemory freeListSpace + (ObjectMemory oldSpaceSize - ObjectMemory oldSpaceUsed).
+ oldSpaceSize := ObjectMemory oldSpaceSize + ObjectMemory symSpaceSize.
+ total := oldSpaceSize + ObjectMemory newSpaceSize.
scaleChange := false.
@@ -140,7 +143,7 @@
scaleChange := true
].
- oldData at:updateIndex put:oldSpaceUsed.
+ oldData at:updateIndex put:oldSpaceSize. "/ oldSpaceUsed.
newData at:updateIndex put:newSpaceUsed.
freeData at:updateIndex put:freeMem.
updateIndex := updateIndex + 1.
@@ -181,7 +184,7 @@
self updateLineX:(updateIndex - 1 + org - 1)
total:total
- old:oldSpaceUsed
+ old:oldSpaceSize "/ oldSpaceUsed
new:newSpaceUsed
free:freeMem.
@@ -250,25 +253,24 @@
]
!
-updateLineX:x total:total old:oldSpaceUsed new:newSpaceUsed free:freeMem
- |hNew hOld hFree y1 y2|
+updateLineX:x total:total old:oldSpaceSize new:newSpaceUsed free:freeMem
+ |hNew hOld hFree y1 y2 y3|
hNew := (newSpaceUsed * scale) asInteger.
- hOld := (oldSpaceUsed * scale) // 2.
- hFree := (freeMem * scale) asInteger.
+ hOld := (oldSpaceSize * scale) // 2.
+ hFree := (freeMem * scale) // 2.
y1 := height - 1.
+
y2 := y1 - hOld.
self paint:oldColor.
self displayLineFromX:x y:y1 toX:x y:y2.
- y1 := y2.
- y2 := y1 - hFree.
+ y3 := y1 - hFree.
self paint:freeColor.
- self displayLineFromX:x y:y1 toX:x y:y2.
+ self displayLineFromX:x y:y1 toX:x y:y3.
- y1 := y2.
- y2 := y1 - hNew.
+ y1 := y2 - hNew.
self paint:newColor.
self displayLineFromX:x y:y1 toX:x y:y2.
!
@@ -287,6 +289,7 @@
t current tenure age
I IGC state
rem remembered set size
+ lrem lifo remembered set size
count of scavenges
last scavenge survivor rate
"
@@ -309,7 +312,7 @@
fontHeight := font height + font descent.
half := height // 2 + font descent.
- y := half - (fontHeight * 4).
+ y := half - (fontHeight * 5).
total ~~ prevTotal ifTrue:[
((total - freeMem) < minTotal) ifTrue:[
@@ -374,9 +377,17 @@
self displayOpaqueString:s x:0 y:y.
y := y + fontHeight.
+ s := 'weak: ' , (ObjectMemory numberOfWeakObjects printStringLeftPaddedTo:4).
+ self displayOpaqueString:s x:0 y:y.
+
+ y := y + fontHeight.
s := 'rem: ' , (ObjectMemory rememberedSetSize printStringLeftPaddedTo:5).
self displayOpaqueString:s x:0 y:y.
+ y := y + fontHeight.
+ s := 'lrem: ' , (ObjectMemory lifoRememberedSetSize printStringLeftPaddedTo:4 ifLarger:['****']).
+ self displayOpaqueString:s x:0 y:y.
+
"/ does no longer make sense to show ....
"/ y := y + fontHeight.
"/ ObjectMemory runsSingleOldSpace ifTrue:[
@@ -482,6 +493,7 @@
labels := #(
'scavenge'
'tenure'
+ 'incremental collect'
'-'
'cleanup memory'
'-'
@@ -490,6 +502,7 @@
selectors := #(
scavenge
tenure
+ incrementalCollect
nil
cleanupMemory
nil
@@ -565,7 +578,7 @@
viewBackground := Black.
device hasColors ifTrue:[
- newColor := Color yellow.
+ newColor := Color orange. "/ yellow.
freeColor := Color green.
oldColor := Color white.
] ifFalse:[
@@ -628,6 +641,12 @@
ObjectMemory markAndSweep
!
+incrementalCollect
+ [
+ [ObjectMemory gcStep] whileFalse:[(Delay forMilliseconds:1) wait]
+ ] forkAt:Processor highestPriority
+!
+
backgroundCollect
[ObjectMemory incrementalGC] forkAt:5
! !
--- a/ProcMonitor.st Sun Jul 23 05:19:48 1995 +0200
+++ b/ProcMonitor.st Thu Aug 03 03:38:05 1995 +0200
@@ -15,7 +15,7 @@
SimpleView subclass:#ProcessMonitor
instanceVariableNames:'listView processes listUpdateDelay updateDelay updateBlock
listUpdateBlock updateProcess hideDead runColor suspendedColor
- waitColor cpuUsages'
+ waitColor cpuUsages showDetail'
classVariableNames:''
poolDictionaries:''
category:'Interface-Tools'
@@ -39,7 +39,7 @@
version
"
-$Header: /cvs/stx/stx/libtool/Attic/ProcMonitor.st,v 1.17 1995-07-03 02:37:45 claus Exp $
+$Header: /cvs/stx/stx/libtool/Attic/ProcMonitor.st,v 1.18 1995-08-03 01:38:05 claus Exp $
"
!
@@ -106,7 +106,9 @@
!ProcessMonitor methodsFor:'drawing'!
titleLine
-"/ ^ 'id name cpu state prio usedStack totalStack'.
+ showDetail ifTrue:[
+ ^ 'id name state prio usedStack totalStack current segment switches'.
+ ].
^ 'id name state prio usedStack totalStack'.
!
@@ -116,7 +118,7 @@
|newList|
shown ifTrue:[
- (Smalltalk at:#SystemDebugging ifAbsent:[false]) ifTrue:[
+ showDetail ifTrue:[
newList := Process allInstances.
] ifFalse:[
newList := ProcessorScheduler knownProcesses asOrderedCollection.
@@ -195,7 +197,7 @@
line := line , (aProcess priority printStringLeftPaddedTo:3).
line := line , (aProcess usedStackSize printStringLeftPaddedTo:11).
line := line , (aProcess totalStackSize printStringLeftPaddedTo:10).
- (Smalltalk at:#SystemDebugging ifAbsent:[false]) ifTrue:[
+ showDetail ifTrue:[
line := line , '(' , aProcess numberOfStackSegments printString , ')'.
con := aProcess suspendedContext.
con isNil ifTrue:[
@@ -259,6 +261,7 @@
super initialize.
hideDead := true.
+ showDetail := Smalltalk at:#SystemDebugging ifAbsent:false.
v := ScrollableView for:SelectionInListView in:self.
v origin:0.0@0.0 corner:1.0@1.0.
@@ -436,50 +439,50 @@
processMenu
|labels selectors m|
- labels := resources array:#(
-"/ hideDead functionality no longer needed;
-"/ since ProcSched knownProcesses only returns living ones
-"/
-"/ '\c hide dead'
-"/ '-'
- 'inspect'
- 'debug'
- '-'
- 'resume'
- 'suspend'
- 'stop'
- 'abort'
- 'terminate'
- '-'
- 'raise prio'
- 'lower prio'
- ).
- selectors := #(
-"/ hideDead:
-"/ nil
- inspectProcess
- debugProcess
- nil
- resumeProcess
- suspendProcess
- stopProcess
- abortProcess
- terminateProcess
- nil
- raisePrio
- lowerPrio
- ).
-
- updateProcess isNil ifTrue:[
- labels := (resources array:#('update' '-')) , labels.
- selectors := #(updateView nil) , selectors
+ device ctrlDown ifTrue:[
+ labels := #(
+ '\c detail'
+ ).
+ selectors := #(
+ detail
+ ).
+ ] ifFalse:[
+ labels := resources array:#(
+ 'inspect'
+ 'debug'
+ '-'
+ 'resume'
+ 'suspend'
+ 'stop'
+ 'abort'
+ 'terminate'
+ '-'
+ 'raise prio'
+ 'lower prio'
+ ).
+ selectors := #(
+ inspectProcess
+ debugProcess
+ nil
+ resumeProcess
+ suspendProcess
+ stopProcess
+ abortProcess
+ terminateProcess
+ nil
+ raisePrio
+ lowerPrio
+ ).
+ updateProcess isNil ifTrue:[
+ labels := (resources array:#('update' '-')) , labels.
+ selectors := #(updateView nil) , selectors
+ ].
].
m := PopUpMenu labels:labels
selectors:selectors.
-"/ m checkToggleAt:#hideDead: put:hideDead.
-
+ m checkToggleAt:#detail put:showDetail.
^ m
!
@@ -509,6 +512,11 @@
self selectedProcessesDo:[:p |
p priority:(p priority - 1)
]
+!
+
+detail
+ showDetail := showDetail not.
+ self updateView
! !
!ProcessMonitor methodsFor:'destroying'!
--- a/ProcessMonitor.st Sun Jul 23 05:19:48 1995 +0200
+++ b/ProcessMonitor.st Thu Aug 03 03:38:05 1995 +0200
@@ -15,7 +15,7 @@
SimpleView subclass:#ProcessMonitor
instanceVariableNames:'listView processes listUpdateDelay updateDelay updateBlock
listUpdateBlock updateProcess hideDead runColor suspendedColor
- waitColor cpuUsages'
+ waitColor cpuUsages showDetail'
classVariableNames:''
poolDictionaries:''
category:'Interface-Tools'
@@ -39,7 +39,7 @@
version
"
-$Header: /cvs/stx/stx/libtool/ProcessMonitor.st,v 1.17 1995-07-03 02:37:45 claus Exp $
+$Header: /cvs/stx/stx/libtool/ProcessMonitor.st,v 1.18 1995-08-03 01:38:05 claus Exp $
"
!
@@ -106,7 +106,9 @@
!ProcessMonitor methodsFor:'drawing'!
titleLine
-"/ ^ 'id name cpu state prio usedStack totalStack'.
+ showDetail ifTrue:[
+ ^ 'id name state prio usedStack totalStack current segment switches'.
+ ].
^ 'id name state prio usedStack totalStack'.
!
@@ -116,7 +118,7 @@
|newList|
shown ifTrue:[
- (Smalltalk at:#SystemDebugging ifAbsent:[false]) ifTrue:[
+ showDetail ifTrue:[
newList := Process allInstances.
] ifFalse:[
newList := ProcessorScheduler knownProcesses asOrderedCollection.
@@ -195,7 +197,7 @@
line := line , (aProcess priority printStringLeftPaddedTo:3).
line := line , (aProcess usedStackSize printStringLeftPaddedTo:11).
line := line , (aProcess totalStackSize printStringLeftPaddedTo:10).
- (Smalltalk at:#SystemDebugging ifAbsent:[false]) ifTrue:[
+ showDetail ifTrue:[
line := line , '(' , aProcess numberOfStackSegments printString , ')'.
con := aProcess suspendedContext.
con isNil ifTrue:[
@@ -259,6 +261,7 @@
super initialize.
hideDead := true.
+ showDetail := Smalltalk at:#SystemDebugging ifAbsent:false.
v := ScrollableView for:SelectionInListView in:self.
v origin:0.0@0.0 corner:1.0@1.0.
@@ -436,50 +439,50 @@
processMenu
|labels selectors m|
- labels := resources array:#(
-"/ hideDead functionality no longer needed;
-"/ since ProcSched knownProcesses only returns living ones
-"/
-"/ '\c hide dead'
-"/ '-'
- 'inspect'
- 'debug'
- '-'
- 'resume'
- 'suspend'
- 'stop'
- 'abort'
- 'terminate'
- '-'
- 'raise prio'
- 'lower prio'
- ).
- selectors := #(
-"/ hideDead:
-"/ nil
- inspectProcess
- debugProcess
- nil
- resumeProcess
- suspendProcess
- stopProcess
- abortProcess
- terminateProcess
- nil
- raisePrio
- lowerPrio
- ).
-
- updateProcess isNil ifTrue:[
- labels := (resources array:#('update' '-')) , labels.
- selectors := #(updateView nil) , selectors
+ device ctrlDown ifTrue:[
+ labels := #(
+ '\c detail'
+ ).
+ selectors := #(
+ detail
+ ).
+ ] ifFalse:[
+ labels := resources array:#(
+ 'inspect'
+ 'debug'
+ '-'
+ 'resume'
+ 'suspend'
+ 'stop'
+ 'abort'
+ 'terminate'
+ '-'
+ 'raise prio'
+ 'lower prio'
+ ).
+ selectors := #(
+ inspectProcess
+ debugProcess
+ nil
+ resumeProcess
+ suspendProcess
+ stopProcess
+ abortProcess
+ terminateProcess
+ nil
+ raisePrio
+ lowerPrio
+ ).
+ updateProcess isNil ifTrue:[
+ labels := (resources array:#('update' '-')) , labels.
+ selectors := #(updateView nil) , selectors
+ ].
].
m := PopUpMenu labels:labels
selectors:selectors.
-"/ m checkToggleAt:#hideDead: put:hideDead.
-
+ m checkToggleAt:#detail put:showDetail.
^ m
!
@@ -509,6 +512,11 @@
self selectedProcessesDo:[:p |
p priority:(p priority - 1)
]
+!
+
+detail
+ showDetail := showDetail not.
+ self updateView
! !
!ProcessMonitor methodsFor:'destroying'!