[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