The Trunk: Compiler-bf.293.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Compiler-bf.293.mcz

commits-2
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!