Prashanth Hebbar | 1 Oct 04:11
Picon

Re: Squeak-dev Digest, Vol 81, Issue 69

Hello Andreas Raab:


I am attaching the SqueakDebug.log.

Date: Wed, 30 Sep 2009 08:40:11 -0700
From: Andreas Raab <andreas.raab <at> gmx.de>
Subject: [squeak-dev] Re: can't save home project in Damein C's
       web-based       image 3.10.2
To: The general-purpose Squeak developers list
       <squeak-dev <at> lists.squeakfoundation.org>
Message-ID: <4AC37BDB.5000304 <at> gmx.de>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

Can you send the SqueakDebug.log? It gets written when an error occurs.

Cheers,
  - Andreas

Prashanth Hebbar wrote:
> Hello:
>
> When I try to save the home project of image 3.10.2-7179 (Damien
> Cassou's web based image), I get a DNU. Here is the last four context
> from the debugger:

Regards,
--
Prashanth Hebbar

Attachment (SqueakDebug.log): application/octet-stream, 4365 bytes

commits | 1 Oct 06:00
Favicon

The Trunk: Collections-ul.148.mcz

Andreas Raab uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-ul.148.mcz

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

Name: Collections-ul.148
Author: ul
Time: 30 September 2009, 2:59:59 am
UUID: 7401c882-7922-a545-ac61-4a7d00fab136
Ancestors: Collections-ar.147

- replaced #whileFalse: with #whileFalse in #scanFor: and #scanForEmptySlotFor: implementations
(both are inlined)
- don't share associatinos with the new Dictionary in Dictionary >> #select:
- avoid growing in Dictionary >> #collect:
- removed temporary from Set >> #like:

=============== Diff against Collections-ar.147 ===============

Item was changed:
  ----- Method: WeakSet>>scanFor: (in category 'private') -----
  scanFor: anObject
+ 	"Scan the key array for the first slot containing either flag (indicating an empty slot) or an element
that matches anObject. Answer the index of that slot or raise an error if no slot is found. This method will
be overridden in various subclasses that have different interpretations for matching elements."
- 	"Scan the key array for the first slot containing either a nil or a flag (indicating an empty slot) or an
element that matches anObject. Answer the index of that slot or raise an error if no slot is found. This
method will be overridden in various subclasses that have different interpretations for matching elements."

  	| index start |
  	index := start := anObject hash \\ array size + 1.
  	[ 
  		| element |
  		((element := array at: index) == flag or: [ element = anObject ])
  			ifTrue: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: Set>>scanFor: (in category 'private') -----
  scanFor: anObject
  	"Scan the key array for the first slot containing either a nil (indicating an empty slot) or an element that
matches anObject. Answer the index of that slot or raise an error if no slot is found. This method will be
overridden in various subclasses that have different interpretations for matching elements."

  	| index start |
  	index := start := anObject hash \\ array size + 1.
  	[ 
  		| element |
  		((element := array at: index) == nil or: [ element = anObject ])
  			ifTrue: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: IdentitySet>>scanForEmptySlotFor: (in category 'private') -----
  scanForEmptySlotFor: anObject
  	"Scan the key array for the first slot containing an empty slot (indicated by a nil). Answer the index of
that slot. This method will be overridden in various subclasses that have different interpretations for
matching elements."
  	
  	| index start hash |
  	array size > 4096
  		ifTrue: [ hash := anObject identityHash * (array size // 4096) ]
  		ifFalse: [ hash := anObject identityHash ].
  	index := start := hash \\ array size + 1.
  	[ 
  		(array at: index) ifNil: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: Dictionary>>scanFor: (in category 'private') -----
  scanFor: anObject
  	"Scan the key array for the first slot containing either a nil (indicating an empty slot) or an element that
matches anObject. Answer the index of that slot or raise an error if no slot is found. This method will be
overridden in various subclasses that have different interpretations for matching elements."

  	| index start |
  	index := start := anObject hash \\ array size + 1.
  	[ 
  		| element |
  		((element := array at: index) == nil or: [ element key = anObject ])
  			ifTrue: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: KeyedIdentitySet>>scanForEmptySlotFor: (in category 'private') -----
  scanForEmptySlotFor: anObject
  	"Scan the key array for the first slot containing an empty slot (indicated by a nil). Answer the index of
that slot. This method will be overridden in various subclasses that have different interpretations for
matching elements."
  	
  	| index start hash |
  	array size > 4096
  		ifTrue: [ hash := anObject identityHash * (array size // 4096) ]
  		ifFalse: [ hash := anObject identityHash ].
  	index := start := hash \\ array size + 1.
  	[ 
  		(array at: index) ifNil: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: IdentityDictionary>>scanFor: (in category 'private') -----
  scanFor: anObject
  	"Scan the key array for the first slot containing either a nil (indicating an empty slot) or an element that
matches anObject. Answer the index of that slot or raise an error if no slot is found. This method will be
overridden in various subclasses that have different interpretations for matching elements."

  	| index start hash |
  	array size > 4096
  		ifTrue: [ hash := anObject identityHash * (array size // 4096) ]
  		ifFalse: [ hash := anObject identityHash ].
  	index := start := hash \\ array size + 1.
  	[ 
  		| element |
  		((element := array at: index) == nil or: [ element key == anObject ])
  			ifTrue: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: WeakIdentityKeyDictionary>>scanFor: (in category 'private') -----
  scanFor: anObject
  	"Scan the key array for the first slot containing either a nil (indicating an empty slot) or an element that
matches anObject. Answer the index of that slot or raise an error if no slot is found. This method will be
overridden in various subclasses that have different interpretations for matching elements."

  	| index start hash |
  	array size > 4096
  		ifTrue: [ hash := anObject identityHash * (array size // 4096) ]
  		ifFalse: [ hash := anObject identityHash ].
  	index := start := hash \\ array size + 1.
  	[ 
  		| element |
  		((element := array at: index) == nil or: [ element key == anObject ])
  			ifTrue: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: WeakSet>>scanForEmptySlotFor: (in category 'private') -----
  scanForEmptySlotFor: anObject
  	"Scan the key array for the first slot containing an empty slot (indicated by flag or a nil). Answer the
index of that slot. This method will be overridden in various subclasses that have different
interpretations for matching elements."
  	
  	| index start |
  	index := start := anObject hash \\ array size + 1.
  	[ 
  		| element |
  		((element := array at: index) == flag or: [ element == nil ]) ifTrue: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: IdentityDictionary>>scanForEmptySlotFor: (in category 'private') -----
  scanForEmptySlotFor: anObject
  	"Scan the key array for the first slot containing an empty slot (indicated by a nil). Answer the index of
that slot. This method will be overridden in various subclasses that have different interpretations for
matching elements."
  	
  	| index start hash |
  	array size > 4096
  		ifTrue: [ hash := anObject identityHash * (array size // 4096) ]
  		ifFalse: [ hash := anObject identityHash ].
  	index := start := hash \\ array size + 1.
  	[ 
  		(array at: index) ifNil: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: Dictionary>>select: (in category 'enumerating') -----
  select: aBlock 
+ 	"Evaluate aBlock with each of my values as the argument. Collect into a new dictionary, only those
associations for which aBlock evaluates to true."
- 	"Evaluate aBlock with each of my values as the argument. Collect into a
- 	new dictionary, only those associations for which aBlock evaluates to
- 	true."

  	| newCollection |
  	newCollection := self species new.
+ 	self associationsDo: [ :each |
+ 		(aBlock value: each value) ifTrue: [
+ 			newCollection add: each copy ] ].
- 	self associationsDo: 
- 		[:each | 
- 		(aBlock value: each value) ifTrue: [newCollection add: each]].
  	^newCollection!

Item was changed:
  ----- Method: Dictionary>>collect: (in category 'enumerating') -----
  collect: aBlock 
+ 	"Evaluate aBlock with each of my values as the argument.  Collect the resulting values into a collection
that is like me. Answer with the new collection."
+ 	
- 	"Evaluate aBlock with each of my values as the argument.  Collect the
- 	resulting values into a collection that is like me. Answer with the new
- 	collection."
  	| newCollection |
+ 	newCollection := self species new: self size.
+ 	self associationsDo: [ :each |
+ 		newCollection at: each key put: (aBlock value: each value) ].
- 	newCollection := self species new.
- 	self associationsDo:[:each |
- 		newCollection at: each key put: (aBlock value: each value).
- 	].
  	^newCollection!

Item was changed:
  ----- Method: PluggableDictionary>>scanFor: (in category 'private') -----
  scanFor: anObject 
  	"Scan the key array for the first slot containing either a nil (indicating an empty slot) or an element that
matches anObject. Answer the index of that slot or raise an error if no slot is found. This method will be
overridden in various subclasses that have different interpretations for matching elements."
  	
  	| index start |
  	index := start := (hashBlock
  		ifNil: [ anObject hash ]
  		ifNotNil: [ hashBlock value: anObject ]) \\ array size + 1.
  	[ 
  		| element |
  		((element := array at: index) == nil or: [
  			equalBlock
  				ifNil: [ element key = anObject ]
  				ifNotNil: [ equalBlock value: element key value: anObject ] ])
  			ifTrue: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: Set>>scanForEmptySlotFor: (in category 'private') -----
  scanForEmptySlotFor: anObject
  	"Scan the key array for the first slot containing an empty slot (indicated by a nil). Answer the index of
that slot. This method will be overridden in various subclasses that have different interpretations for
matching elements."
  	
  	| index start |
  	index := start := anObject hash \\ array size + 1.
  	[ 
  		(array at: index) ifNil: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: Set>>like: (in category 'accessing') -----
  like: anObject
  	"Answer an object in the receiver that is equal to anObject,
  	nil if no such object is found. Relies heavily on hash properties"

+ 	^array at: (self scanFor: anObject)!
- 	| index |
- 	index := self scanFor: anObject.
- 	^array at: index!

Item was changed:
  ----- Method: PluggableSet>>scanFor: (in category 'private') -----
  scanFor: anObject 
  	"Scan the key array for the first slot containing either a nil (indicating an empty slot) or an element that
matches anObject. Answer the index of that slot or raise an error if no slot is found. This method will be
overridden in various subclasses that have different interpretations for matching elements."
  	
  	| index start |
  	index := start := (hashBlock
  		ifNil: [ anObject hash ]
  		ifNotNil: [ hashBlock value: anObject ]) \\ array size + 1.
  	[ 
  		| element |
  		((element := array at: index) == nil or: [
  			equalBlock
  				ifNil: [ element = anObject ]
  				ifNotNil: [ equalBlock value: element value: anObject ] ])
  			ifTrue: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: WeakIdentityKeyDictionary>>scanForEmptySlotFor: (in category 'private') -----
  scanForEmptySlotFor: anObject
  	"Scan the key array for the first slot containing an empty slot (indicated by a nil). Answer the index of
that slot. This method will be overridden in various subclasses that have different interpretations for
matching elements."
  	
  	| index start hash |
  	array size > 4096
  		ifTrue: [ hash := anObject identityHash * (array size // 4096) ]
  		ifFalse: [ hash := anObject identityHash ].
  	index := start := hash \\ array size + 1.
  	[ 
  		(array at: index) ifNil: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: PluggableDictionary>>scanForEmptySlotFor: (in category 'private') -----
  scanForEmptySlotFor: anObject
  	"Scan the key array for the first slot containing an empty slot (indicated by a nil). Answer the index of
that slot. This method will be overridden in various subclasses that have different interpretations for
matching elements."
  	
  	| index start |
  	index := start := (hashBlock
  		ifNil: [ anObject hash ]
  		ifNotNil: [ hashBlock value: anObject ]) \\ array size + 1.
  	[ 
  		(array at: index) ifNil: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: IdentitySet>>scanFor: (in category 'private') -----
  scanFor: anObject
  	"Scan the key array for the first slot containing either a nil (indicating an empty slot) or an element that
matches anObject. Answer the index of that slot or raise an error if no slot is found. This method will be
overridden in various subclasses that have different interpretations for matching elements."

  	| index start hash |
  	array size > 4096
  		ifTrue: [ hash := anObject identityHash * (array size // 4096) ]
  		ifFalse: [ hash := anObject identityHash ].
  	index := start := hash \\ array size + 1.
  	[ 
  		| element |
  		((element := array at: index) == nil or: [ element == anObject ])
  			ifTrue: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: KeyedIdentitySet>>scanFor: (in category 'private') -----
  scanFor: anObject
  	"Scan the key array for the first slot containing either a nil (indicating an empty slot) or an element that
matches anObject. Answer the index of that slot or raise an error if no slot is found. This method will be
overridden in various subclasses that have different interpretations for matching elements."

  	| index start hash |
  	array size > 4096
  		ifTrue: [ hash := anObject identityHash * (array size // 4096) ]
  		ifFalse: [ hash := anObject identityHash ].
  	index := start := hash \\ array size + 1.
  	[ 
  		| element |
  		((element := array at: index) == nil or: [ (keyBlock value: element) == anObject ])
  			ifTrue: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: KeyedSet>>scanFor: (in category 'private') -----
  scanFor: anObject
  	"Scan the key array for the first slot containing either a nil (indicating an empty slot) or an element that
matches anObject. Answer the index of that slot or raise an error if no slot is found. This method will be
overridden in various subclasses that have different interpretations for matching elements."

  	| index start |
  	index := start := anObject hash \\ array size + 1.
  	[ 
  		| element |
  		((element := array at: index) == nil or: [ (keyBlock value: element) = anObject ])
  			ifTrue: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

Item was changed:
  ----- Method: PluggableSet>>scanForEmptySlotFor: (in category 'private') -----
  scanForEmptySlotFor: anObject
  	"Scan the key array for the first slot containing an empty slot (indicated by a nil). Answer the index of
that slot. This method will be overridden in various subclasses that have different interpretations for
matching elements."
  	
  	| index start |
  	index := start := (hashBlock
  		ifNil: [ anObject hash ]
  		ifNotNil: [ hashBlock value: anObject ]) \\ array size + 1.
  	[ 
  		(array at: index) ifNil: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

commits | 1 Oct 06:01
Favicon

The Trunk: CollectionsTests-ul.98.mcz

Andreas Raab uploaded a new version of CollectionsTests to project The Trunk:
http://source.squeak.org/trunk/CollectionsTests-ul.98.mcz

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

Name: CollectionsTests-ul.98
Author: ul
Time: 30 September 2009, 3:01:48 am
UUID: 71177639-1f4f-4947-b07b-4cb007d8e9c9
Ancestors: CollectionsTests-nice.97

- Dictionary shouldn't share associations in #select:

=============== Diff against CollectionsTests-nice.97 ===============

Item was changed:
  ----- Method: DictionaryTest>>testSelect (in category 'testing') -----
  testSelect
  	"Ensure that Dictionary>>select: answers a dictionary not something else"
  	| dict expected result |
  	dict := Dictionary newFromPairs:{
  		#first.		1.
  		#second.	2.
  		#third.		3.
  		#fourth.	4.
  		#fifth.		5.
  	}.
  	result := dict select:[:each| each odd].
  	expected := Dictionary newFromPairs:{
  		#first.		1.
  		#third.		3.
  		#fifth.		5.
  	}.
+ 	self assert: result = expected.
+ 	result at: #first put: 0.
+ 	self assert: (dict at: #first) = 1 "No side effects"!
- 	self assert: result = expected.!

commits | 1 Oct 06:01
Favicon

The Trunk: Compiler-ul.86.mcz

Andreas Raab uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-ul.86.mcz

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

Name: Compiler-ul.86
Author: ul
Time: 30 September 2009, 3:03:27 am
UUID: aed23852-da1c-3b4f-88e8-33c860f282dd
Ancestors: Compiler-jcg.85

- new #scanFor: for LiteralDictionary too

=============== Diff against Compiler-jcg.85 ===============

Item was changed:
  ----- Method: LiteralDictionary>>scanFor: (in category 'as yet unclassified') -----
  scanFor: anObject
+ 	"Scan the key array for the first slot containing either a nil (indicating an empty slot) or an element
that matches anObject. Answer the index of that slot or raise an error if no slot is found. This method will
be overridden in various subclasses that have different interpretations for matching elements."
- 	"Scan the key array for the first slot containing either a nil (indicating an empty slot) or an element
that matches anObject. Answer the index of that slot or zero if no slot is found. This method will be
overridden in various subclasses that have different interpretations for matching elements."
- 	| element start finish |
- 	finish := array size.
- 	start := (anObject hash \\ finish) + 1.

+ 	| index start |
+ 	index := start := anObject hash \\ array size + 1.
+ 	[ 
+ 		| element |
+ 		((element := array at: index) == nil or: [
+ 			self literalEquality: element key and: anObject ])
+ 				ifTrue: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
+ 	self errorNoFreeSpace!
- 	"Search from (hash mod size) to the end."
- 	start to: finish do:
- 		[:index | ((element := array at: index) == nil
- 					or: [self literalEquality: element key and: anObject])
- 					ifTrue: [^ index ]].
- 
- 	"Search from 1 to where we started."
- 	1 to: start-1 do:
- 		[:index | ((element := array at: index) == nil
- 					or: [self literalEquality: element key and: anObject])
- 					ifTrue: [^ index ]].
- 
- 	^ 0  "No match AND no empty slot"!

commits | 1 Oct 06:28
Favicon

The Trunk: Kernel-ul.254.mcz

Andreas Raab uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-ul.254.mcz

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

Name: Kernel-ul.254
Author: ul
Time: 30 September 2009, 3:04:30 am
UUID: e908dda7-2b3b-3d4b-b301-08b2a4d289bf
Ancestors: Kernel-ar.253

- replaced #whileFalse: with #whileFalse in MethodDictionary  >> #scanFor:

=============== Diff against Kernel-ar.253 ===============

Item was changed:
  ----- Method: MethodDictionary>>scanFor: (in category 'private') -----
  scanFor: anObject
  	"Scan the key array for the first slot containing either a nil (indicating an empty slot) or an element that
matches anObject. Answer the index of that slot or raise an error if no slot is found. This method will be
overridden in various subclasses that have different interpretations for matching elements."

  	| index start |
  	index := start := anObject identityHash \\ array size + 1.
  	[ 
  		| element |
  		((element := self basicAt: index) == nil or: [ element == anObject ])
  			ifTrue: [ ^index ].
+ 		(index := index \\ array size + 1) = start ] whileFalse.
- 		(index := index \\ array size + 1) = start ] whileFalse: [ ].
  	self errorNoFreeSpace!

commits | 1 Oct 06:29
Favicon

The Trunk: Collections-ar.150.mcz

Andreas Raab uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-ar.150.mcz

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

Name: Collections-ar.150
Author: ar
Time: 30 September 2009, 9:29:03 am
UUID: ed19ab06-dd57-0e4f-a80c-0c5cba39e948
Ancestors: Collections-ul.148, Collections-ul.149

Merging Collections-ul.149:

- removed zero check from WeakSet >> #like:

=============== Diff against Collections-ul.148 ===============

Item was changed:
  ----- Method: WeakSet>>like: (in category 'public') -----
  like: anObject
  	"Answer an object in the receiver that is equal to anObject,
  	nil if no such object is found. Relies heavily on hash properties"

+ 	| element |
+ 	^(element  := array at: (self scanFor: anObject)) == flag
+ 		ifFalse: [ element ]!
- 	| index element |
- 
- 	^(index := self scanFor: anObject) = 0
- 		ifFalse: [(element := array at: index) == flag ifFalse: [element]]!

commits | 1 Oct 08:22
Favicon

The Trunk: Compiler-jcg.87.mcz

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!

Picon
Gravatar

Re: ESUG movies...



2009/9/30 Göran Krampe <goran <at> krampe.se>
Hi!

Ok, after a lot of mucking around I have decided to stick with the current Handbrake script I have. It is now running churning out movies here:

http://mimer.msc.se/esug

There are 43-91 movies, they will appear automatically when they have been encoded. NOTE: The one with the highest number is not yet READY! Unless it is numbered 91 of course :)

Now, two things:

1. If you are unhappy with this format, holler! I can still start over.

2. Please help me out by writing down what these files actually contain!

Here is a wiki page for that: http://wiki.squeak.org/squeak/6147


Thanks Göran for your time and effort.
The only thing I could add is to put happier names to the files. Because with the name you don't know which video is it. And here: http://wiki.squeak.org/squeak/6147
there are few description only.

Thanks a lot.

Mariano
 
regards, Göran




Colin Putney | 1 Oct 18:37
Picon
Favicon

Re: [ANN] OmniBrowser 2.0.3


On 30-Sep-09, at 12:55 PM, Bernhard Pieber wrote:

>> Ah, ok. That is a great example why I think a first class renaming  
>> operation is so important for a VCS - instead of just removing and  
>> adding. Good names are so important that nothing should stand in  
>> the way of improving them. We talked about that in Toronto IIRC. Of  
>> course I know this is a very difficult feature to implement. Is  
>> there any chance MC2 will support it?

In some cases, yes. It will certainly handle renames of packages, so  
this issue with renames of packages will go away when (!) we move  
OmniBrowser development to MC2. It doesn't support explicit renames of  
classes, which, as you noted is a very hard problem. Given MC2's fine- 
grained versioning, though, this may not turn out to be a big issue.

> Maybe it would be an improvement to rename OB-Umbrella to  
> OmniBrowserFull or OmniBrowserDevelopment, assuming that there are  
> not many branches of OB-Umbrella to be merged?

Perhaps. I'm leaning towards getting rid of the umbrella package  
entirely, and relying on Metacello, MonticelloConfigurations, or  
something of the sort.

Colin

Göran Krampe | 1 Oct 19:22
Picon
Gravatar

Re: ESUG movies...

Hi!

Mariano Martinez Peck wrote:
> Thanks Göran for your time and effort.
> The only thing I could add is to put happier names to the files. Because
> with the name you don't know which video is it. And here:
> http://wiki.squeak.org/squeak/6147
> there are few description only.

I know, I was hoping for you guys helping me with adding descriptions!
I will eventually get descriptions in place, but it would be nice if we 
could do it together.

regards, Göran


Gmane