[squeak-dev] The Trunk: Compiler-bf.293.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Feb 20 02:26:16 UTC 2015


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!



More information about the Squeak-dev mailing list