[Pharo-project] Fwd: [squeak-dev] The Trunk: Compiler-jcg.87.mcz
Begin forwarded message:
From: commits@source.squeak.org Date: October 1, 2009 8:21:58 AM GMT+02:00 To: squeak-dev@lists.squeakfoundation.org Subject: [squeak-dev] The Trunk: Compiler-jcg.87.mcz Reply-To: squeak-dev@lists.squeakfoundation.org
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!
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
Item was changed: ----- Method: MethodNode + + 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!
looks like it's using the new scheme. we should test it at least. Mike On Monday, October 5, 2009, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
Begin forwarded message:
From: commits@source.squeak.org Date: October 1, 2009 8:21:58 AM GMT+02:00 To: squeak-dev@lists.squeakfoundation.org Subject: [squeak-dev] The Trunk: Compiler-jcg.87.mcz Reply-To: squeak-dev@lists.squeakfoundation.org
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!
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
Item was changed: Â ----- Method: MethodNode + + Â Â 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 Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
participants (2)
-
Michael Roberts -
Stéphane Ducasse