A new version of Mirrors was added to project The Inbox:
http://source.squeak.org/inbox/Mirrors-cwp.3.mcz==================== Summary ====================
Name: Mirrors-cwp.3
Author: cwp
Time: 22 May 2012, 7:58:35.001 am
UUID: ce10c0ff-2bec-42a4-9019-aa357e803b24
Ancestors: Mirrors-cwp.2
Made MessageShunt a subclass of ProtoObject for now. Having a nil superclass causes problems.
=============== Diff against Mirrors-cwp.2 ===============
Item was changed:
+ ProtoObject subclass: #MessageShunt
- nil subclass: #MessageShunt
instanceVariableNames: 'handler'
classVariableNames: ''
poolDictionaries: ''
category: 'Mirrors-Utilities'!
Item was added:
+ ----- Method: MessageShunt class>>deactivate (in category 'as yet unclassified') -----
+ deactivate
+ | inst |
+ inst := self someInstance.
+ [inst == nil] whileFalse:
+ [Reflection receiver: inst perform: #fixedAt:put: arguments: {1. [:v]}.
+ inst := Reflection receiver: inst perform: #nextInstance arguments: #()]!
Item was removed:
- ----- Method: MessageShunt class>>initialize (in category 'as yet unclassified') -----
- initialize
- self superclass: nil!
Item was removed:
- ----- Method: Reflection class>>with:do: (in category 'as yet unclassified') -----
- with: anObject do: aBlock
- | result shunt |
- shunt := MessageShunt handler:
- [:message || cm |
- cm := self compiledMethodAt: message selector.
- result := self
- receiver: anObject
- withArguments: message arguments
- executeMethod: cm].
- aBlock value: shunt.
- ^ result
- !
Item was added:
+ ----- Method: Reflection>>nextInstance (in category 'as yet unclassified') -----
+ nextInstance
+ <primitive: 78>
+ ^ nil!