Begin forwarded message:
> From: [email protected] > Date: October 1, 2009 8:21:58 AM GMT+02:00 > To: [email protected] > Subject: [squeak-dev] The Trunk: Compiler-jcg.87.mcz > Reply-To: [email protected] > > 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! > > _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
