[squeak-dev] The Trunk: EToys-nice.116.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Dec 16 14:57:57 UTC 2013


Nicolas Cellier uploaded a new version of EToys to project The Trunk:
http://source.squeak.org/trunk/EToys-nice.116.mcz

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

Name: EToys-nice.116
Author: nice
Time: 16 December 2013, 3:57:08.611 pm
UUID: 95b95062-8e45-4262-b5b8-afea43dfb898
Ancestors: EToys-fbs.115

Use non logging Compiler protocol rather than providing a logged: false argument.

=============== Diff against EToys-fbs.115 ===============

Item was changed:
  ----- Method: ButtonProperties>>setArguments (in category 'menu') -----
  setArguments
  
  	| s newArgs newArgsArray |
  	s := WriteStream on: ''.
  	arguments do: [:arg | arg printOn: s. s nextPutAll: '. '].
  	newArgs := UIManager default
  		request:
  'Please type the arguments to be sent to the target
  when this button is pressed separated by periods' translated
  		initialAnswer: s contents.
  	newArgs isEmpty ifFalse: [
+ 		newArgsArray := Compiler evaluate: '{', newArgs, '}' for: self.
- 		newArgsArray := Compiler evaluate: '{', newArgs, '}' for: self logged: false.
  		self arguments: newArgsArray].
  !

Item was changed:
  ----- Method: KedamaVectorizer>>checkRequireVectorIn:for: (in category 'private') -----
  checkRequireVectorIn: aMessageNode for: obj
  
  	| players playersSet playerNodes |
  	"self halt."
  	playerNodes := self getAllPlayersIn: aMessageNode for: obj.
+ 	players := playerNodes collect: [:e | Compiler evaluate: e name for: obj.].
- 	players := playerNodes collect: [:e | Compiler evaluate: e name for: obj logged: false.].
  	playersSet := players asSet.
  	(playersSet select: [:e | e isPrototypeTurtlePlayer]) size = 0 ifTrue: [
+ 		attributes setAttribute: #firstTurtle of: aMessageNode to: (Compiler evaluate: playerNodes first name for: obj).
- 		attributes setAttribute: #firstTurtle of: aMessageNode to: (Compiler evaluate: playerNodes first name for: obj logged: false).
  		attributes setAttribute: #requireVector of: aMessageNode to: false.
  		^ self.
  	].
  	(playersSet select: [:e | e isPrototypeTurtlePlayer]) size > 0 ifTrue: [	
  		playerNodes with: players do: [:n :p | | sel |
  			p isPrototypeTurtlePlayer ifTrue: [
  				sel := self getSelectorRootFor: p fromMessageNode: aMessageNode for: obj ignoreSelectors: #(beNotZero: setTurtleCount: getTurtleCount setGrouped: getGrouped).
  				sel ifNotNil: [
  					(self isVectorizationRequiredWithPlayer: p andSelector: sel) ifTrue: [
  						attributes setAttribute: #requireVector of: aMessageNode to: true.
  						attributes setAttribute: #firstTurtle of: aMessageNode to: p.
  						attributes setAttribute: #firstNode of: aMessageNode to: n.
  						^ self.
  					].
  				].
  			].
  		].
  	].
  
  	attributes setAttribute: #firstTurtle of: aMessageNode to: players first.
  	attributes setAttribute: #requireVector of: aMessageNode to: false.
  !

Item was changed:
  ----- Method: KedamaVectorizer>>getPlayersMessage:for:into: (in category 'player and selector look up') -----
  getPlayersMessage: aMessageNode for: obj into: aCollection
  
  	
  	((Array with: aMessageNode receiver), aMessageNode arguments) do: [:stmt | | thisPlayer |
  		(stmt isMemberOf: MessageNode) ifTrue: [
  			self getPlayersMessage: stmt for: obj into: aCollection.
  		].
  		(stmt isMemberOf: BlockNode) ifTrue: [
  			self getPlayersBlock: stmt for: obj into: aCollection..
  		].
  		(stmt isMemberOf: VariableNode) ifTrue: [
+ 			thisPlayer := Compiler evaluate: stmt name for: obj.
- 			thisPlayer := Compiler evaluate: stmt name for: obj logged: false.
  			(thisPlayer isKindOf: Player) ifTrue: [aCollection add: stmt].
  		].
  	].
  !

Item was changed:
  ----- Method: KedamaVectorizer>>getSelectorFor:fromMessageNode:for:ifFoundDo:ignoreSelectors: (in category 'player and selector look up') -----
  getSelectorFor: receiver fromMessageNode: aMessageNode for: obj ifFoundDo: aBlock ignoreSelectors: ignoreSelectors
  
  	
  	root ifNotNil: [^ self].
  	(Array with: aMessageNode receiver), aMessageNode arguments do: [:stmt | | key thisPlayer |
  		(stmt isMemberOf: VariableNode) ifTrue: [
+ 			thisPlayer := Compiler evaluate: stmt name for: obj.
- 			thisPlayer := Compiler evaluate: stmt name for: obj logged: false.
  			thisPlayer == receiver ifTrue: [
  				key :=  aMessageNode selector key.
  				(ignoreSelectors includes: key) ifFalse: [aBlock value: key. ^ self]].
  		].
  		(stmt isMemberOf: MessageNode) ifTrue: [
  			self getSelectorFor: receiver fromMessageNode: stmt for: obj ifFoundDo: aBlock ignoreSelectors: ignoreSelectors
  		].
  		(stmt isMemberOf: BlockNode) ifTrue: [
  			self getSelectorFor: receiver fromBlockNode: stmt for: obj ifFoundDo: aBlock ignoreSelectors: ignoreSelectors
  		].
  	].
  !

Item was changed:
  ----- Method: KedamaVectorizer>>includesTurtlePlayer:for: (in category 'entry point') -----
  includesTurtlePlayer: aMethodNode for: obj
  
  	| players |
  	players := self getAllPlayersInMethodNode: aMethodNode for: obj.
  	players do: [:e | | p |
+ 		p := Compiler evaluate: e name for: obj.
- 		p := Compiler evaluate: e name for: obj logged: false.
  		(p isKindOf: KedamaExamplerPlayer) ifTrue: [^ true].
  	].
  	^ false.
  !

Item was changed:
  ----- Method: KedamaVectorizer>>traverseMessage:in:firstPlayer:inCondition: (in category 'vectorization attribute calculation') -----
  traverseMessage: aMessageNode in: obj firstPlayer: firstPlayer inCondition: inCondition
  
  	| receiver thisPlayer ret constant proto |
  
  	aMessageNode arguments do: [:argument |
  		(argument isMemberOf: MessageNode) ifTrue: [
  			self traverseMessage: argument in: obj firstPlayer: firstPlayer inCondition: inCondition.
  		].
  		(argument isMemberOf: BlockNode) ifTrue: [
  			self traverseBlock: argument in: obj firstPlayer: firstPlayer inCondition: inCondition.
  		].
  		(argument isMemberOf: LiteralNode) ifTrue: [
  			attributes setAttribute: #constant of: argument to: true.
  		].
  		(argument isMemberOf: VariableNode) ifTrue: [
+ 			thisPlayer := Compiler evaluate: argument name for: obj.
- 			thisPlayer := Compiler evaluate: argument name for: obj logged: false.
  			ret := (thisPlayer isKindOf: Player) and: [thisPlayer costume renderedMorph isKindOf: KedamaPatchMorph].
  			attributes setAttribute: #constant of: argument to: ret.
  		].
  	].
  
  	receiver := aMessageNode receiver.
  	(receiver isMemberOf: MessageNode) ifTrue: [
  		self traverseMessage: receiver in: obj firstPlayer: firstPlayer inCondition: inCondition.
  	].
  	(receiver isMemberOf: BlockNode) ifTrue: [
  		self traverseBlock: receiver in: obj firstPlayer: firstPlayer inCondition: inCondition.
  	].
  	(receiver isMemberOf: LiteralNode) ifTrue: [
  		attributes setAttribute: #constant of: receiver to: true.
  	].
  	(receiver isMemberOf: VariableNode) ifTrue: [
+ 		thisPlayer := Compiler evaluate: receiver name for: obj.
- 		thisPlayer := Compiler evaluate: receiver name for: obj logged: false.
  		ret := thisPlayer == firstPlayer.
  		attributes setAttribute: #constant of: receiver to: ret.
  		proto := (thisPlayer isKindOf: Player) and: [thisPlayer isPrototypeTurtlePlayer].
  		attributes setAttribute: #isTurtle of: receiver to: proto.
  		attributes setAttribute: #scalar of: aMessageNode selector to:
  		(ret not and: [(proto and: [self isScalarizable: thisPlayer andSelector: aMessageNode selector key])]).
  	].
  
  	"special cases..."
  	(#(atRandom die getReplicated bounceOn: bounceOn:color: bounceOnColor: ifTrue: ifFalse: ifTrue:ifFalse: itFalse:ifTrue:
  	setPatchValueIn:to: getTurtleAt: getTurtleOf:) includes: aMessageNode selector key) ifTrue: [
  		attributes setAttribute: #constant of: aMessageNode to: false.
  		aMessageNode selector key = #die ifTrue: [
  			attributes setAttribute: #dieMessage of: root to: true.
  		].
  
  	] ifFalse: [
  		constant := (aMessageNode arguments copyWith: receiver) allSatisfy: [:t | attributes getAttribute: #constant of: t].
  		attributes setAttribute: #constant of: aMessageNode to: constant.
  	].
  
  !

Item was changed:
  ----- Method: PhraseTileMorph>>try (in category 'miscellaneous') -----
  try
  	"Evaluate the given phrase once"
  
  	| aPlayer |
  	(userScriptSelector notNil and: [userScriptSelector numArgs = 0])
  		ifTrue:
  			[aPlayer := self objectViewed player.
  			aPlayer triggerScript: userScriptSelector]
  		ifFalse:
  			[Compiler evaluate:
  				self codeString
+ 				for: self associatedPlayer]!
- 				for: self associatedPlayer
- 				logged: false]!

Item was changed:
  ----- Method: SyntaxMorph>>actualObject (in category 'accessing') -----
  actualObject
  	| sub |
  	"Who is self in these tiles?  Usually a Player."
  
  
  	(self nodeClassIs: LiteralVariableNode) ifTrue: [
  		(sub := self findA: StringMorph) ifNil: [^ nil].
  		"Need to decompile here for odd synonyms of 'self' ?"
+ 		^ Compiler evaluate: sub contents for: Player].
- 		^ Compiler evaluate: sub contents for: Player logged: false].
  
  	(self nodeClassIs: VariableNode) ifTrue: [
  		(sub := self findA: StringMorph) ifNil: [^ nil].
  		^ References at: (self cleanUpString: sub) asSymbol ifAbsent: [nil]].
  
  	(self nodeClassIs: LiteralNode) ifTrue: [
  		(sub := self findA: StringMorph) ifNil: [^ nil].
+ 		^ Compiler evaluate: sub contents for: nil].
- 		^ Compiler evaluate: sub contents for: nil logged: false].
  
  	(sub := self findA: SyntaxMorph) ifNil: [^ nil].
  	^ sub actualObject	"receiver"!

Item was changed:
  ----- Method: SyntaxMorph>>try (in category 'layout') -----
  try
  	"Evaluate me once"
  
  	(#(MessageNode LiteralNode VariableNode) includes: parseNode class name) 
  		ifFalse: [^ Error new].
  	^ [Compiler evaluate: self decompile
+ 				for: self actualObject.	"should do something to the player"
- 				for: self actualObject
- 				logged: false.	"should do something to the player"
  		] ifError: [ :a :b | Error new].!



More information about the Squeak-dev mailing list