[Pkg] The Trunk: Tools-ct.915.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri Nov 22 13:00:38 UTC 2019
Marcel Taeumel uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-ct.915.mcz
==================== Summary ====================
Name: Tools-ct.915
Author: ct
Time: 15 November 2019, 5:30:02.890005 pm
UUID: 326d55bd-8463-7e43-a517-e934932fb3a9
Ancestors: Tools-mt.914
Refactor ProcessBrowser nil checks again and move them into #stackListKey:from:. Also, use #browseMethod: in #browseContext to ensure the right version is browsed
Thanks to Marcel for the review!
=============== Diff against Tools-mt.914 ===============
Item was changed:
----- Method: ProcessBrowser>>browseContext (in category 'stack list') -----
browseContext
+ ToolSet browseMethod: selectedContext method!
- selectedContext
- ifNil: [^ self].
- ToolSet browse: self selectedClass selector: self selectedSelector!
Item was changed:
----- Method: ProcessBrowser>>changePriority (in category 'process actions') -----
changePriority
| str newPriority nameAndRules |
- selectedProcess ifNil: [^ self].
nameAndRules := self nameAndRulesForSelectedProcess.
nameAndRules third
ifFalse: [self inform: 'Nope, won''t change priority of ' , nameAndRules first.
^ self].
str := UIManager default
request: 'New priority'
initialAnswer: selectedProcess priority asString.
newPriority := str asNumber asInteger.
newPriority
ifNil: [^ self].
(newPriority < 1
or: [newPriority > Processor highestPriority])
ifTrue: [self inform: 'Bad priority'.
^ self].
self class setProcess: selectedProcess toPriority: newPriority.
self updateProcessList!
Item was changed:
----- Method: ProcessBrowser>>chasePointers (in category 'process actions') -----
chasePointers
| saved |
- selectedProcess ifNil: [^ self].
saved := selectedProcess.
[selectedProcess := nil.
(Smalltalk includesKey: #PointerFinder)
ifTrue: [PointerFinder on: saved]
ifFalse: [self inspectPointers]]
ensure: [selectedProcess := saved]!
Item was changed:
----- Method: ProcessBrowser>>debugProcess (in category 'process actions') -----
debugProcess
| nameAndRules |
- selectedProcess ifNil: [^ self].
nameAndRules := self nameAndRulesForSelectedProcess.
nameAndRules third
ifFalse: [self inform: 'Nope, won''t debug ' , nameAndRules first.
^ self].
self class debugProcess: selectedProcess.!
Item was changed:
----- Method: ProcessBrowser>>exploreContext (in category 'stack list') -----
exploreContext
+ selectedContext explore!
- selectedContext ifNotNil: #explore!
Item was changed:
----- Method: ProcessBrowser>>exploreProcess (in category 'process list') -----
exploreProcess
+ selectedProcess explore!
- selectedProcess ifNotNil: #explore!
Item was changed:
----- Method: ProcessBrowser>>exploreReceiver (in category 'stack list') -----
exploreReceiver
+ selectedContext receiver explore!
- selectedContext ifNotNil: [
- selectedContext receiver explore]!
Item was changed:
----- Method: ProcessBrowser>>inspectContext (in category 'stack list') -----
inspectContext
+ selectedContext inspect!
- selectedContext ifNotNil: #inspect!
Item was changed:
----- Method: ProcessBrowser>>inspectPointers (in category 'process actions') -----
inspectPointers
| tc pointers |
- selectedProcess ifNil: [^ self].
tc := thisContext.
pointers := PointerFinder
pointersTo: selectedProcess
except: {
self processList.
tc.
self}.
pointers isEmpty ifTrue: [^ self].
OrderedCollectionInspector
openOn: pointers
withEvalPane: false
withLabel: 'Objects pointing to ' , selectedProcess browserPrintString!
Item was changed:
----- Method: ProcessBrowser>>inspectProcess (in category 'process list') -----
inspectProcess
+ selectedProcess inspect!
- selectedProcess ifNotNil: #inspect!
Item was changed:
----- Method: ProcessBrowser>>inspectReceiver (in category 'stack list') -----
inspectReceiver
+ selectedContext receiver inspect!
- selectedContext ifNotNil: [
- selectedContext receiver inspect]!
Item was changed:
----- Method: ProcessBrowser>>messageTally (in category 'stack list') -----
messageTally
| secString secs |
- selectedProcess ifNil: [^ self].
secString := UIManager default request: 'Profile for how many seconds?' initialAnswer: '4'.
secString isEmptyOrNil ifTrue: [^ self].
secs := secString asNumber asInteger.
(secs isNil or: [secs isZero])
ifTrue: [^ self].
[ TimeProfileBrowser spyOnProcess: selectedProcess forMilliseconds: secs * 1000 ] forkAt: selectedProcess priority + 1.!
Item was changed:
----- Method: ProcessBrowser>>processListKey:from: (in category 'process list') -----
+ processListKey: aKey from: aView
+
+ aKey
+ caseOf: {
+ [$f] -> [^ self findContext].
+ [$g] -> [^ self nextContext].
+ [$a] -> [^ self toggleAutoUpdate].
+ [$u] -> [^ self updateProcessList] }
+ otherwise: [].
+ selectedProcess ifNil: [^ self changed: #flash].
+ ^ aKey
+ caseOf: {
+ [$i] -> [self inspectProcess].
+ [$I] -> [self exploreProcess].
+ [$c] -> [self chasePointers].
+ [$P] -> [self inspectPointers].
+ [$t] -> [self terminateProcess].
+ [$r] -> [self resumeProcess].
+ [$s] -> [self suspendProcess].
+ [$d] -> [self debugProcess].
+ [$p] -> [self changePriority].
+ [$m] -> [self messageTally].
+ [$S] -> [self signalSemaphore].
+ [$k] -> [self moreStack]}
+ otherwise: [self arrowKey: aKey from: aView]!
- processListKey: aKey from: aView
- ^ aKey caseOf: {
- [$i] -> [self inspectProcess].
- [$I] -> [self exploreProcess].
- [$c] -> [self chasePointers].
- [$P] -> [self inspectPointers].
- [$t] -> [self terminateProcess].
- [$r] -> [self resumeProcess].
- [$s] -> [self suspendProcess].
- [$d] -> [self debugProcess].
- [$p] -> [self changePriority].
- [$m] -> [self messageTally].
- [$f] -> [self findContext].
- [$g] -> [self nextContext].
- [$a] -> [self toggleAutoUpdate].
- [$u] -> [self updateProcessList].
- [$S] -> [self signalSemaphore].
- [$k] -> [self moreStack]}
- otherwise: [self arrowKey: aKey from: aView]!
Item was changed:
----- Method: ProcessBrowser>>resumeProcess (in category 'process actions') -----
resumeProcess
- selectedProcess ifNil: [^ self].
self class resumeProcess: selectedProcess.
self updateProcessList!
Item was changed:
----- Method: ProcessBrowser>>signalSemaphore (in category 'process actions') -----
signalSemaphore
- selectedProcess ifNil: [^ self].
(selectedProcess suspendingList isKindOf: Semaphore)
ifFalse: [^ self].
[selectedProcess suspendingList signal] fork.
(Delay forMilliseconds: 300) wait.
"Hate to make the UI wait, but it's convenient..."
self updateProcessList!
Item was changed:
----- Method: ProcessBrowser>>stackListKey:from: (in category 'views') -----
+ stackListKey: aKey from: aView
+
+ selectedContext ifNil: [^ self changed: #flash].
+ ^ aKey
+ caseOf: {
+ [$c] -> [self inspectContext].
+ [$C] -> [self exploreContext].
+ [$i] -> [self inspectReceiver].
+ [$I] -> [self exploreReceiver].
+ [$b] -> [self browseContext]}
+ otherwise: [self arrowKey: aKey from: aView]!
- stackListKey: aKey from: aView
- ^ aKey caseOf: {
- [$c] -> [self inspectContext].
- [$C] -> [self exploreContext].
- [$i] -> [self inspectReceiver].
- [$I] -> [self exploreReceiver].
- [$b] -> [self browseContext]}
- otherwise: [self arrowKey: aKey from: aView]!
Item was changed:
----- Method: ProcessBrowser>>suspendProcess (in category 'process actions') -----
suspendProcess
| nameAndRules |
- selectedProcess ifNil: [^ self].
selectedProcess isSuspended
ifTrue: [^ self].
nameAndRules := self nameAndRulesForSelectedProcess.
nameAndRules second
ifFalse: [self inform: 'Nope, won''t suspend ' , nameAndRules first.
^ self].
self class suspendProcess: selectedProcess.
self updateProcessList!
Item was changed:
----- Method: ProcessBrowser>>terminateProcess (in category 'process actions') -----
terminateProcess
| nameAndRules |
- selectedProcess ifNil: [^ self].
nameAndRules := self nameAndRulesForSelectedProcess.
nameAndRules second
ifFalse: [self inform: 'Nope, won''t kill ' , nameAndRules first.
^ self].
self class terminateProcess: selectedProcess.
self updateProcessList!
More information about the Packages
mailing list