The Trunk: Tools-eem.756.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Tools-eem.756.mcz

commits-2
Eliot Miranda uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-eem.756.mcz

==================== Summary ====================

Name: Tools-eem.756
Author: eem
Time: 11 April 2017, 12:06:44.157162 pm
UUID: e6634875-90c8-4ebf-9f07-5b3e1aadfc81
Ancestors: Tools-cmm.755

Make the debugger handle gracefully stepping through the termiation of a process.

=============== Diff against Tools-cmm.755 ===============

Item was changed:
  ----- Method: Debugger>>buildControlButtonsWith: (in category 'toolbuilder') -----
  buildControlButtonsWith: builder
 
  | panelSpec |
  panelSpec := builder pluggablePanelSpec new.
  panelSpec children: OrderedCollection new.
  self customButtonSpecs do:[:spec|
  | buttonSpec |
  buttonSpec := builder pluggableActionButtonSpec new.
  buttonSpec model: self.
  buttonSpec label: spec first.
  buttonSpec action: spec second.
  spec second == #methodHierarchy ifTrue:[
  buttonSpec color: #inheritanceButtonColor.
  ].
+ spec size > 2 ifTrue:
+ [buttonSpec help: spec third.
+ spec size > 3 ifTrue:
+ [buttonSpec enabled: spec fourth]].
- spec size > 2 ifTrue:[buttonSpec help: spec third].
  panelSpec children add: buttonSpec.
  ].
 
  panelSpec layout: #horizontal. "buttons"
  ^panelSpec!

Item was changed:
  ----- Method: Debugger>>customButtonSpecs (in category 'initialize') -----
  customButtonSpecs
  "Answer an array of elements of the form wording, selector, help-message, that characterize the custom button row of a debugger."
 
  | list |
  list := #(('Proceed' proceed 'close the debugger and proceed.')
  ('Restart' restart 'reset this context to its start.')
+ ('Into' send 'step Into message sends' interruptedProcessIsActive)
+ ('Over' doStep 'step Over message sends' interruptedProcessIsActive)
+ ('Through' stepIntoBlock 'step into a block' interruptedProcessIsActive)
- ('Into' send 'step Into message sends')
- ('Over' doStep 'step Over message sends')
- ('Through' stepIntoBlock 'step into a block')
  ('Full Stack' fullStack 'show full stack')
  ('Where' where 'select current pc range')
  ('Tally' tally 'time in milliseconds to execute')).
  Preferences restartAlsoProceeds ifTrue:
  [list := list collect: [:each |
  each second == #restart
  ifTrue: [each copy at: 3 put: 'proceed from the beginning of this context.'; yourself]
  ifFalse: [each]]].
  ^ list!

Item was added:
+ ----- Method: Debugger>>interruptedProcessIsActive (in category 'user interface') -----
+ interruptedProcessIsActive
+ ^interruptedProcess isTerminated not!

Item was changed:
  ----- Method: Debugger>>resetContext:changeContents: (in category 'private') -----
  resetContext: aContext changeContents: aBoolean
  "Used when a new context becomes top-of-stack, for instance when the
  method of the selected context is re-compiled, or the simulator steps or
  returns to a new method. There is room for much optimization here, first
  to save recomputing the whole stack list (and text), and secondly to avoid
  recomposing all that text (by editing the paragraph instead of recreating it)."
 
  | oldContext |
  oldContext := self selectedContext.
+ self newStack: (aContext ifNil: [oldContext]) contextStack.
+ self changed: #contextStackList; changed: #interruptedProcessIsActive.
- self newStack: aContext contextStack.
- self changed: #contextStackList.
  self contextStackIndex: 1 oldContextWas: oldContext.
  aBoolean ifTrue: [self contentsChanged].
  !