While in the write we need to mark:
lookupVariableForWrite: aVariableNode
| var |
var := scope lookupVar: aVariableNode name.
var ifNil: [^var]. var isSpecialVariable ifTrue: [ self storeIntoSpecialVariable: aVariableNode ]. var isWritable ifFalse: [ self storeIntoReadOnlyVariable: aVariableNode ].
var isTemp ifTrue: [ "when in a loop, all writes escape" scope outerScope isInsideOptimizedLoop ifTrue: [ var markEscapingWrite ]. "else only escaping when they will end up in different closures" (var scope outerNotOptimizedScope ~= scope outerNotOptimizedScope) ifTrue: [ var markEscapingWrite]]. ^var
I checked that all Opal tests that are failing are actually testing wrong, and I double checked that all those methods are now compiled like with the old old compiler⦠Now recompilng the image.
Hmm⦠nopeâ¦. something wrong.
the âouterScopeâ was wrong. So without that, I can recompile the image and your example is compiled without temp vectors⦠Marcus