[Pkg] The Trunk: Kernel-bf.565.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Apr 7 10:09:11 UTC 2011

Bert Freudenberg uploaded a new version of Kernel to project The Trunk:

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

Name: Kernel-bf.565
Author: bf
Time: 7 April 2011, 12:08:35.536 pm
UUID: f5b1f9f1-3c3b-4dac-bec9-88df9a90cd0e
Ancestors: Kernel-ar.564

- make ObjectTracer/ObjectViewer work again (try the example in ObjectViewer class comment). BEWARE however, sending xxxUnTrace still sometimes locks up the image
- not sure why sentTo: doesn't work, had to switch to sendTo:
- optionally allow accessing the caught message, e.g.:
	object evaluate: [:msg | Transcript cr; show: msg]
		wheneverChangeIn: [x := x = false].

=============== Diff against Kernel-ar.564 ===============

Item was changed:
+ ProtoObject subclass: #ObjectTracer
- nil subclass: #ObjectTracer
  	instanceVariableNames: 'tracedObject recursionFlag'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'Kernel-Objects'!
  !ObjectTracer commentStamp: '<historical>' prior: 0!
  An ObjectTracer can be wrapped around another object, and then give you a chance to inspect it whenever it receives messages from the outside.  For instance...
  	(ObjectTracer on: Display) flash: (50 at 50 extent: 50 at 50)
  will give control to a debugger just before the message flash is sent.
  Obviously this facility can be embellished in many useful ways.
  See also the even more perverse subclass, ObjectViewer, and its example.

Item was removed:
- ----- Method: ObjectViewer class>>on:evaluate:wheneverChangeIn: (in category 'instance creation') -----
- on: viewedObject evaluate: block1 wheneverChangeIn: block2
- 	^ self new xxxViewedObject: viewedObject evaluate: block1 wheneverChangeIn: block2!

Item was changed:
  ----- Method: ObjectViewer>>doesNotUnderstand: (in category 'very few messages') -----
  doesNotUnderstand: aMessage 
  	"Check for change after sending aMessage"
  	| returnValue newValue |
+ 	recursionFlag ifTrue: [^ aMessage sendTo: tracedObject].
- 	recursionFlag ifTrue: [^ aMessage sentTo: tracedObject].
  	recursionFlag := true.
+ 	returnValue := aMessage sendTo: tracedObject.
+ 	newValue := valueBlock valueWithPossibleArgument: aMessage.
- 	returnValue := aMessage sentTo: tracedObject.
- 	newValue := valueBlock value.
  	newValue = lastValue ifFalse:
+ 		[changeBlock valueWithPossibleArgument: aMessage..
- 		[changeBlock value.
  		lastValue := newValue].
  	recursionFlag := false.
  	^ returnValue!

More information about the Packages mailing list