Eliot Miranda uploaded a new version of Compiler to project The Trunk: http://source.squeak.org/trunk/Compiler-eem.350.mcz
==================== Summary ====================
Name: Compiler-eem.350 Author: eem Time: 10 April 2017, 11:54:17.562394 am UUID: 2ea4f497-05f7-4dbd-b6af-31821d794e22 Ancestors: Compiler-eem.349
Have decompileMethod: access the method from its argument, aBlock, so that FullBlockClosures have a chance of decompiling correctly.
=============== Diff against Compiler-eem.349 ===============
Item was changed: ----- Method: Decompiler>>decompileBlock: (in category 'public access') ----- decompileBlock: aBlock "Decompile aBlock, returning the result as a BlockNode. Show temp names from source if available." "Decompiler new decompileBlock: [3 + 4]" | startpc end homeClass blockNode methodNode home | + (home := aBlock home) ifNil: [^nil]. + (homeClass := home methodClass) == #unknown ifTrue: [^nil]. + method := aBlock method. - (home := aBlock home) ifNil: [^ nil]. - method := home method. - (homeClass := home methodClass) == #unknown ifTrue: [^ nil]. aBlock isClosure ifTrue: [(methodNode := method decompileWithTemps) ifNil: [^nil] ifNotNil: [methodNode nodesDo: [:node| node pc = aBlock startpc ifTrue: [^node]]]. ^self error: 'cannot find block node matching aBlock']. constructor := self constructorForMethod: aBlock method. self withTempNames: method methodNode tempNames.
self initSymbols: homeClass. startpc := aBlock startpc. end := aBlock endPC. stack := OrderedCollection new: method frameSize. lastJumpIfPcStack := OrderedCollection new. caseExits := OrderedCollection new. statements := OrderedCollection new: 20. super method: method pc: startpc - 5. blockNode := self blockTo: end. stack isEmpty ifFalse: [self error: 'stack not empty']. ^blockNode statements first!
squeak-dev@lists.squeakfoundation.org