Eliot Miranda uploaded a new version of 45Deprecated to project The Trunk:
http://source.squeak.org/trunk/45Deprecated-eem.26.mcz
==================== Summary ====================
Name: 45Deprecated-eem.26
Author: eem
Time: 14 March 2018, 1:03:19.52478 pm
UUID: 99445fb1-fe7e-4cc3-abff-ab19e1163a32
Ancestors: 45Deprecated-dtl.25
Update the alternative implementation for hasSpecialSelector:ifTrueSetByte: given the new literal scanning machinery.
=============== Diff against 45Deprecated-dtl.25 ===============
Item was changed:
----- Method: SystemDictionary>>hasSpecialSelector:ifTrueSetByte: (in category '*45Deprecated') -----
hasSpecialSelector: aLiteral ifTrueSetByte: aBlock
+ self deprecated: 'Use BytecodeEncoder class>>scanBlockOrNilForLiteral:'.
- self deprecated: 'Use Smalltalk'.
^Smalltalk hasSpecialSelector: aLiteral ifTrueSetByte: aBlock!
Eliot Miranda uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-eem.1004.mcz
==================== Summary ====================
Name: System-eem.1004
Author: eem
Time: 10 March 2018, 10:43:34.493016 am
UUID: 1992db0b-7b1c-42ce-a4a3-1bfeab7f25b4
Ancestors: System-dtl.1003
restore a trivial method that went missing or was forgotten a long time ago.
=============== Diff against System-dtl.1003 ===============
Item was added:
+ ----- Method: RecentMessages>>purgeFromRecentSubmissions: (in category 'accessing') -----
+ purgeFromRecentSubmissions: aMethodReference
+ methodReferences remove: aMethodReference ifAbsent: []!
Eliot Miranda uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-eem.374.mcz
==================== Summary ====================
Name: Compiler-eem.374
Author: eem
Time: 9 March 2018, 5:26:54.927757 pm
UUID: 346de92b-2782-45ad-b91b-fc790654a88f
Ancestors: Compiler-eem.373
Make reindexingLiteralsDo: more robust when literals get added during blocks and are used in an outer scope after use in a block. c.f. Compiler-eem.369
=============== Diff against Compiler-eem.373 ===============
Item was changed:
----- Method: BytecodeEncoder>>reindexingLiteralsDo: (in category 'code generation') -----
reindexingLiteralsDo: aBlock
+ "Reset any and all literals so that they will be given new indices in
+ the literalStream during aBlock (which will be used to generate a
+ nested block method). Afterwards restore those same literals to
+ their original state, and reset any and all new literals added during
+ aBlock so that they will be given new indices if used subsequently."
| savedNodes saveBlock |
savedNodes := IdentityDictionary new.
+ saveBlock := [:node|
+ savedNodes at: node put: node shallowCopy.
+ node resetForBlockGeneration].
- saveBlock := [:node| savedNodes at: node put: node shallowCopy. node resetForBlockGeneration].
litSet do: saveBlock.
litIndSet do: saveBlock.
selectorSet do: saveBlock.
^aBlock ensure:
[| restoreBlock |
+ restoreBlock := [:node|
+ savedNodes
+ at: node
+ ifPresent: [:copy| node resetFromCopy: copy]
+ ifAbsent: [node resetForBlockGeneration]].
- restoreBlock := [:node| node resetFromCopy: (savedNodes at: node)].
litSet do: restoreBlock.
litIndSet do: restoreBlock.
+ selectorSet do: restoreBlock]!
- selectorSet do: [:node| node resetFromCopy: (savedNodes at: node ifAbsent: [node])]]!
Eliot Miranda uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-eem.784.mcz
==================== Summary ====================
Name: Collections-eem.784
Author: eem
Time: 9 March 2018, 5:18:51.529302 pm
UUID: 1862bd2e-3307-4973-b7b1-c8f6ad8d5f53
Ancestors: Collections-ul.783
Provide more efficient implementation(s) of at:ifPresent:ifAbsent: given impending use in the Compiler.
=============== Diff against Collections-ul.783 ===============
Item was changed:
----- Method: Dictionary>>at:ifPresent:ifAbsent: (in category 'accessing') -----
at: key ifPresent: oneArgBlock ifAbsent: absentBlock
+ "Lookup the given key in the receiver. If it is present, answer the
+ value of evaluating the oneArgBlock with the value associated
+ with the key, otherwise answer the value of absentBlock."
+ ^(array at: (self scanFor: key))
+ ifNil: [absentBlock value]
+ ifNotNil: [:association| oneArgBlock value: association value]!
- "Lookup the given key in the receiver. If it is present, answer the value of evaluating the oneArgBlock with the value associated with the key, otherwise answer the value of absentBlock."
- self at: key ifPresent:[:v| ^oneArgBlock value: v].
- ^absentBlock value!
Item was added:
+ ----- Method: WeakIdentityDictionary>>at:ifPresent:ifAbsent: (in category 'accessing') -----
+ at: key ifPresent: oneArgBlock ifAbsent: absentBlock
+ "Lookup the given key in the receiver. If it is present, answer the
+ value of evaluating the oneArgBlock with the value associated
+ with the key, otherwise answer the value of absentBlock."
+ ^(array at: (self scanFor: key))
+ ifNil: [absentBlock value]
+ ifNotNil:
+ [:association|
+ association == vacuum
+ ifTrue: [absentBlock value]
+ ifFalse: [oneArgBlock value: association value]]!
Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.1158.mcz
==================== Summary ====================
Name: Kernel-eem.1158
Author: eem
Time: 9 March 2018, 5:15:51.802392 pm
UUID: 4bef21b3-d2da-4b76-a6e0-c9ee189d478a
Ancestors: Kernel-ul.1157
Provide more efficient implementation(s) of at:ifPresent:ifAbsent: given impending use in the Compiler.
=============== Diff against Kernel-ul.1157 ===============
Item was added:
+ ----- Method: MethodDictionary>>at:ifPresent:ifAbsent: (in category 'accessing') -----
+ at: key ifPresent: oneArgBlock ifAbsent: absentBlock
+ "Lookup the given key in the receiver. If it is present, answer the
+ value of evaluating the oneArgBlock with the value associated
+ with the key, otherwise answer the value of absentBlock."
+ ^(array at: (self scanFor: key))
+ ifNil: [absentBlock value]
+ ifNotNil: [:method| oneArgBlock value: method]!