--- !ditz.rubyforge.org,2008-03-06/issue title: improve compiler temp reg allocation desc: |- The current temporary register handling is quite primitive. In current code, ALLOCTEMP(), ALLOCTEMPS(), SETTEMP() macros are used to manipulate temporary register allocation. ALLOCTEMP() and ALLOCTEMPS() update "temp_max" but SETTEMP() does not; using SETTEMP() is only valid if it is guaranteed to not go above "temp_max". SETTEMP_CHECKMAX() is used in at least one place to update the "temp_next" value and also check whether "temp_max" needs to be updated. Some code working with temps is now quite unoptimal, e.g. using an ALLOCTEMP() and then doing a SETTEMP() immediately to essentially bump "temp_max" upwards. A separate primitive should be used for this. Temporary registers ("temp_next") is reset occasionally in code, but even so some code sequences generate unoptimal temp reg allocations now. type: :task component: duk release: reporter: sva status: :unstarted disposition: creation_time: 2013-02-26 11:44:54.737998 Z references: [] id: d379657cceb221059242afde051f498ba1bf39f0 log_events: - - 2013-02-26 11:44:55.138246 Z - sva - created - ""