Eliot Miranda uploaded a new version of TemporaryVariableScopeEditor to project The Trunk:
http://source.squeak.org/trunk/TemporaryVariableScopeEditor-eem.3.mcz==================== Summary ====================
Name: TemporaryVariableScopeEditor-eem.3
Author: eem
Time: 6 June 2018, 10:49:12.17059 am
UUID: 6c4b939d-5460-44c5-a5c4-f188ec87b8ea
Ancestors: TemporaryVariableScopeEditor-eem.2
Update the TempScopeEditor to work with arbitrary bytecode sets.
=============== Diff against TemporaryVariableScopeEditor-eem.2 ===============
Item was added:
+ ----- Method: TempScopeEditor class>>scanBlock (in category 'scanning') -----
+ scanBlock
+ ^[:m|
+ m isQuick not
+ and: [(m abstractBytecodeMessageAt: m initialPC) selector = #pushNewArrayOfSize:
+ and: [(m abstractBytecodeMessageAt: (m concretePCForAbstractPC: 2)) selector = #popIntoTemporaryVariable:
+ and: [(self new forMethod: m) misplacedTempsExist]]]]!
Item was changed:
----- Method: TempScopeEditor>>edit (in category 'editing') -----
edit
+ self misplacedTempsExist ifTrue:
- self buildTempMap.
- tempMap notEmpty ifTrue:
[| mr |
mr := method methodReference.
self copyMethodMovingTemps.
Transcript cr; show: mr actualClass name, ' >> ', mr methodSymbol.
method methodClass compile: out contents classified: mr category]!
Item was changed:
----- Method: TempScopeEditor>>editNoCompile (in category 'editing') -----
editNoCompile
+ ^self misplacedTempsExist ifTrue:
- self buildTempMap.
- ^tempMap isEmpty ifFalse:
[self copyMethodMovingTemps.
out contents]!
Item was added:
+ ----- Method: TempScopeEditor>>misplacedTempsExist (in category 'testing') -----
+ misplacedTempsExist
+ self buildTempMap.
+ ^tempMap notEmpty!