Bert Freudenberg uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-bf.293.mcz==================== Summary ====================
Name: Compiler-bf.293
Author: bf
Time: 19 February 2015, 6:22:49.349 pm
UUID: 737af1fb-e8f0-4653-851b-0c1b3ed0f65f
Ancestors: Compiler-topa.292
Fix deoptimization of ifNil: etc.
=============== Diff against Compiler-topa.292 ===============
Item was changed:
ParseNode subclass: #MessageNode
+ instanceVariableNames: 'receiver selector precedence special arguments sizes equalNode caseErrorNode originalReceiver originalSelector originalArguments'
- instanceVariableNames: 'receiver selector precedence special arguments sizes equalNode caseErrorNode originalSelector originalArguments'
classVariableNames: 'MacroEmitters MacroPrinters MacroSelectors MacroSizers MacroTransformers StdTypers ThenFlag'
poolDictionaries: ''
category: 'Compiler-ParseNodes'!
!MessageNode commentStamp: '<historical>' prior: 0!
I represent a receiver and its message.
Precedence codes:
1 unary
2 binary
3 keyword
4 other
If special>0, I compile special code in-line instead of sending messages with literal methods as remotely copied contexts.!
Item was changed:
+ ----- Method: MessageNode>>ensureCanCascade: (in category 'cascading') -----
- ----- Method: MessageNode>>ensureCanCascade: (in category 'testing') -----
ensureCanCascade: encoder
-
special > 0 ifTrue:
[special := 0.
+ receiver := originalReceiver.
selector := encoder encodeSelector: originalSelector.
arguments := originalArguments.
receiver isBlockNode ifTrue: [receiver deoptimize].
arguments do:
[:each|
each isBlockNode ifTrue:
[each deoptimize]]]!
Item was changed:
+ ----- Method: MessageNode>>receiver:arguments:precedence: (in category 'cascading') -----
- ----- Method: MessageNode>>receiver:arguments:precedence: (in category 'private') -----
receiver: rcvr arguments: args precedence: p
receiver := rcvr.
+ originalReceiver := rcvr copy.
arguments := args.
originalArguments := arguments copy.
sizes := Array new: arguments size.
precedence := p!