[Pkg] The Trunk: Tools-eem.757.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Apr 13 21:02:29 UTC 2017
Eliot Miranda uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-eem.757.mcz
==================== Summary ====================
Name: Tools-eem.757
Author: eem
Time: 13 April 2017, 2:02:11.819767 pm
UUID: 16ab4ff6-7a4c-49b7-aa90-025eb0164a8f
Ancestors: Tools-eem.756
Have the debugger look for both the old and the soon-to-appear new quickStep: methods when trying to inform an exsting debugger of an error.
=============== Diff against Tools-eem.756 ===============
Item was changed:
----- Method: Debugger class>>informExistingDebugger:label: (in category 'instance creation') -----
informExistingDebugger: aContext label: aString
"Walking the context chain, we try to find out if we're in a debugger stepping situation.
If we find the relevant contexts, we must rearrange them so they look just like they would
if the methods were executed outside of the debugger.
hmm 8/3/2001 13:05"
| ctx quickStepMethod oldSender baseContext |
ctx := thisContext.
+ quickStepMethod := Context
+ compiledMethodAt: #quickSend:to:with:lookupIn:
+ ifAbsent: [Context compiledMethodAt: #quickSend:to:with:super:].
+ [ctx sender == nil or: [ctx sender method == quickStepMethod]] whileFalse:
+ [ctx := ctx sender].
- quickStepMethod := Context compiledMethodAt: #quickSend:to:with:super:.
- [ctx sender == nil or: [ctx sender method == quickStepMethod]] whileFalse: [ctx := ctx sender].
ctx sender ifNil: [^self].
baseContext := ctx.
"baseContext is now the context created by the #quickSend... method."
oldSender := ctx := ctx sender home sender.
"oldSender is the context which originally sent the #quickSend... method"
+ [ctx == nil or: [(ctx objectClass: ctx receiver) includesBehavior: self]] whileFalse:
+ [ctx := ctx sender].
- [ctx == nil or: [(ctx objectClass: ctx receiver) includesBehavior: self]] whileFalse: [ctx := ctx sender].
ctx ifNil: [^self].
"ctx is the context of the Debugger method #doStep"
ctx receiver
labelString: aString;
externalInterrupt: false;
proceedValue: aContext receiver.
baseContext swapSender: baseContext sender sender sender. "remove intervening contexts"
thisContext swapSender: oldSender. "make myself return to debugger"
ErrorRecursion := false.
^aContext!
More information about the Packages
mailing list