Eliot Miranda uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-eem.747.mcz==================== Summary ====================
Name: Morphic-eem.747
Author: eem
Time: 6 October 2014, 3:39:08.651 pm
UUID: 6d5fda0b-2826-43c4-af1e-9f5c0cf7258e
Ancestors: Morphic-eem.746
Fix the broken fix in Morphic-eem.746 for debugging
optimized methods.
=============== Diff against Morphic-eem.746 ===============
Item was changed:
----- Method: TextEditor>>debug:receiver:in: (in category 'do-its') -----
debug: aCompiledMethod receiver: anObject in: evalContext
| guineaPig debugger debuggerWindow context |
+ guineaPig :=
+ [aCompiledMethod
- guineaPig := [
- aCompiledMethod
valueWithReceiver: anObject
+ arguments: (evalContext ifNil: [ #() ] ifNotNil: [ { evalContext } ]).
+ guineaPig := nil "spot the return from aCompiledMethod"] newProcess.
- arguments: (evalContext ifNil: [ #() ] ifNotNil: [ { evalContext } ]) ] newProcess.
context := guineaPig suspendedContext.
debugger := Debugger new
process: guineaPig
controller: nil
context: context.
debuggerWindow := debugger openFullNoSuspendLabel: 'Debug it'.
"Now step into the expression. But if it is quick (is implemented as a primtiive, e.g. `0')
it will return immediately back to the block that is sent newProcess above. Guard
against that with the check for home being thisContext."
[debugger interruptedContext method == aCompiledMethod]
whileFalse:
+ [(guineaPig isNil
+ and: [debugger interruptedContext home == thisContext]) ifTrue:
- [debugger interruptedContext home == thisContext ifTrue:
[debuggerWindow delete.
UIManager default inform: 'Nothing to debug; expression is optimized'.
^self].
debugger send]!