I ran some testcases with your changes and I expect some test are failing now, but actually they don't fail but others do.
2014-10-16 22:06 GMT+02:00 Nicolai Hess <[email protected]>: > 2014-10-16 17:40 GMT+02:00 Marcus Denker <[email protected]>: > >> >> >> >> 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 >> > > good! > I'll open an issue on fogbugz and create a slice with your changes. > > about reordering of tempvars: > It would be nice if the order preserves, but I think we can live with it. > Although there is an issue with the debugger: > 14058 <https://pharo.fogbugz.com/default.asp?14058> Inconsistent > information in debugger > I solved that one by using tempvar names instead if the index, but > this has another issue (sometimes the last (or most nested) tempvar is > always nil). > > The real error is, EyeDebuggerContextInspector does recognizes if the > index changes > (somewhere in EyeDebuggerContextInspector>>#updateList it > compares the new elements (with new indices) with the old elements list > and skips the update) > > > > >
