[squeak-dev] The Trunk: Compiler-jcg.87.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Oct 1 06:21:58 UTC 2009


Joshua Gargus uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-jcg.87.mcz

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

Name: Compiler-jcg.87
Author: jcg
Time: 30 September 2009, 11:21:53 am
UUID: 71bf4e8d-f9f3-4371-a218-ad31a985cfd8
Ancestors: Compiler-ul.86

Revert to lazy-initialization of method properties, which is used by the externally-maintained Prolog package (which loads cleanly into 3.10.2, but not trunk).

Part 2 of 2... need to load -jcg.85 first (this is taken care of by the Monticello Configuration update-jcg.32.mcm)

=============== Diff against Compiler-ul.86 ===============

Item was changed:
  ----- Method: Parser>>addPragma: (in category 'pragmas') -----
  addPragma: aPragma
+ 	properties := self properties copyWith: aPragma!
- 	properties := properties copyWith: aPragma!

Item was changed:
  ----- Method: Parser>>method:context:encoder: (in category 'expression types') -----
  method: doit context: ctxt encoder: encoderToUse
  	" pattern [ | temporaries ] block => MethodNode."
  
  	| sap blk prim temps messageComment methodNode |
- 	properties := AdditionalMethodState new.
  	encoder := encoderToUse.
  	sap := self pattern: doit inContext: ctxt.
  	"sap={selector, arguments, precedence}"
+ 	self properties selector: (sap at: 1).
- 	properties selector: (sap at: 1).
  	encoder selector: (sap at: 1).
  	(sap at: 2) do: [:argNode | argNode beMethodArg].
  	doit ifFalse: [self pragmaSequence].
  	temps := self temporaries.
  	messageComment := currentComment.
  	currentComment := nil.
  	doit ifFalse: [self pragmaSequence].
  	prim := self pragmaPrimitives.
  	self statements: #() innerBlock: doit.
  	blk := parseNode.
  	doit ifTrue: [blk returnLast]
  		ifFalse: [blk returnSelfIfNoOther: encoder].
  	hereType == #doIt ifFalse: [^self expected: 'Nothing more'].
  	self interactive ifTrue: [self removeUnusedTemps].
  	methodNode := self newMethodNode comment: messageComment.
  	^methodNode
  		selector: (sap at: 1)
  		arguments: (sap at: 2)
  		precedence: (sap at: 3)
  		temporaries: temps
  		block: blk
  		encoder: encoder
  		primitive: prim
  		properties: properties!

Item was changed:
  ----- Method: MethodNode>>selector:arguments:precedence:temporaries:block:encoder:primitive: (in category 'initialize-release') -----
  selector: selOrFalse arguments: args precedence: p temporaries: temps block: blk encoder: anEncoder primitive: prim 
+ 	
+ 	self 
+ 		selector: selOrFalse
+ 		arguments: args
+ 		precedence: p
+ 		temporaries: temps
+ 		block: blk encoder:
+ 		anEncoder 
+ 		primitive: prim 
+ 		properties: AdditionalMethodState new.!
- 	"Initialize the receiver with respect to the arguments given."
- 
- 	encoder := anEncoder.
- 	selectorOrFalse := selOrFalse.
- 	precedence := p.
- 	arguments := args.
- 	temporaries := temps.
- 	block := blk.
- 	primitive := prim!

Item was changed:
  ----- Method: Parser>>pragmaPrimitives (in category 'pragmas') -----
  pragmaPrimitives
  	| primitives |
+ 	self properties isEmpty ifTrue:
- 	properties isEmpty ifTrue:
  		[^0].
  	primitives := properties pragmas select:
  					[:pragma|
  					self class primitivePragmaSelectors includes: pragma keyword].
  	primitives isEmpty ifTrue:
  		[^0].
  	primitives size > 1 ifTrue:
  		[^self notify: 'Ambigous primitives'].
  	^self perform: primitives first keyword withArguments: primitives first arguments!




More information about the Squeak-dev mailing list