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])]]!
packages@lists.squeakfoundation.org