VM Maker: VMMakerUI-eem.31.mcz

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

VM Maker: VMMakerUI-eem.31.mcz

commits-2
 
Eliot Miranda uploaded a new version of VMMakerUI to project VM Maker:
http://source.squeak.org/VMMaker/VMMakerUI-eem.31.mcz

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

Name: VMMakerUI-eem.31
Author: eem
Time: 30 October 2020, 6:08:18.984073 am
UUID: 569db58c-700d-4f32-82fc-b2dee4ffb3b7
Ancestors: VMMakerUI-eem.30

To allow leaf functions to take arguments passed on the stack (as is needed for IA32) move marshaling to after the (questionable) switch to the C stack.

=============== Diff against VMMakerUI-eem.30 ===============

Item was changed:
  ----- Method: Cogit>>setClickStepBreakBlock (in category '*VMMakerUI-user interface') -----
  setClickStepBreakBlock
  "Set the break block to present a confirmer, breaking if true, and restoring the previous break block.
  If an open debugger on the receiver can be found, proceed it."
  <doNotGenerate>
  | previousBreakBlock previousAtEachStepBlock previousBreakPC previousSingleStep previousClickConfirm result |
  (breakBlock isNil or: [breakBlock method ~~ thisContext method]) ifTrue:
  [previousBreakBlock := breakBlock.
  previousAtEachStepBlock := coInterpreter atEachStepBlock.
  previousBreakPC := breakPC.
  previousSingleStep := singleStep.
  previousClickConfirm := clickConfirm.
  breakBlock := [:ign|
  (processor pc ~= previousBreakPC
  and: [(result := self promptClickStep) == true])
  ifTrue: [false]
  ifFalse: [breakBlock := previousBreakBlock.
  coInterpreter atEachStepBlock: previousAtEachStepBlock.
  breakPC := previousBreakPC.
  singleStep := previousSingleStep.
  clickConfirm := previousClickConfirm.
  true]].
  coInterpreter atEachStepBlock:
  [previousAtEachStepBlock value.
  (coInterpreter localIP ~= previousBreakPC
   and: [(result := self promptClickStep) == true]) ifFalse:
  [breakBlock := previousBreakBlock.
  coInterpreter atEachStepBlock: previousAtEachStepBlock.
  breakPC := previousBreakPC.
  singleStep := previousSingleStep.
  clickConfirm := previousClickConfirm.
  self halt]].
  singleStep := breakPC := clickConfirm := result ~~ #proceed].
  (World submorphs
  detect:
  [:m|
  m model isDebugger
  and: [(m model interruptedProcess suspendedContext findContextSuchThat:
  [:ctxt|
  (ctxt receiver == self
  and: [ctxt selector == #simulateCogCodeAt:
+ or: [ctxt selector == #simulateLeafCallOf:marshaling:]])
- or: [ctxt selector == #simulateLeafCallOf:]])
  or: [ctxt receiver == coInterpreter
  and: [ctxt selector == #interpret]]]) notNil]]
  ifNone: []) ifNotNil:
  [:debuggerWindow|
  WorldState addDeferredUIMessage:
  [debuggerWindow model proceed]]!