Methods and apparatus for allocating and using stack space are disclosed.
According to one aspect of the present invention, a computer-implemented
method for allocating stack space in an object-based system includes
obtaining source code that is suitable for compilation and includes a
definition associated with a variable. During register allocation, stack
slots and machine registers are treated substantially similarly. This
includes the steps of building an interference graph, copy coalescing,
attempting to color the interference graph, and determining if the attempt
to color the interference graph is successful. If the coloring attempt is
not successful, then in lieu of normal spill code being inserted,
register-to-register copies, e.g., "reg-reg" copies, are inserted in the
source code. The "reg-reg" copies include copies associated with both
stack slots and machine registers.
De methodes en de apparaten om stapelruimte toe te wijzen en te gebruiken worden onthuld. Volgens één aspect van de onderhavige uitvinding, omvat een computer-uitgevoerde methode om stapelruimte in een op voorwerp-gebaseerd systeem toe te wijzen het verkrijgen van broncode die geschikt voor compilatie is en een definitie verbonden aan een variabele omvat. Tijdens registertoewijzing, worden de stapelgroeven en de machineregisters wezenlijk zo ook behandeld. Dit omvat de stappen van de bouw van een interferentiegrafiek, exemplaar dat, de interferentiegrafiek probeert te kleuren, bepaalt samenvoegt zich en als de poging om de interferentiegrafiek te kleuren succesvol is. Als de kleuringspoging niet succesvol is, dan in plaats van normale morserijcode die, register-aan-register exemplaren wordt opgenomen, b.v., "Reg.-Reg." exemplaren, wordt opgenomen in de broncode. "Reg.-Reg." exemplaren omvat exemplaren verbonden aan zowel stapelgroeven als machineregisters.