<div>I'm analysing the souce codes of kaffe.</div>
<div>when I read the &quot;translate&quot; in KAFFE_HOME/kaffevm/jit3/machine.c.threre are some notes like this:</div>
<div>/*<br>&nbsp;* Translate a method into native code.<br>&nbsp;*<br>&nbsp;* Registers are allocated per basic block, using an LRU algorithm.<br>&nbsp;* Contents of registers are spilled at the end of basic block,<br>&nbsp;* depending on the edges in the CFG leaving the basic block:
<br>&nbsp;*<br>&nbsp;* - If there is an edge from the basic block to an exception handler,<br>&nbsp;*&nbsp;&nbsp; local variables are spilled on the stack<br>&nbsp;*<br>&nbsp;* - If there is only one non-exception edge, and the target basic<br>&nbsp;*&nbsp;&nbsp; block is following the current block immediately, no spills are done
<br>&nbsp;*<br>&nbsp;* - Otherwise, the local variables and the operand stack are spilled<br>&nbsp;*&nbsp;&nbsp; onto the stack<br>&nbsp;*/</div>
<div>&nbsp;</div>
<div>some relative documents I have read, but I have some questions about the notes above:</div>
<div>in the notes,&nbsp; what is the &quot;Registers&quot;?&nbsp; what is the &quot;CFG&quot;? what it means about &quot;edge&quot;? what is the &quot;basic block?&quot;, what the &quot;spill&quot; means? what those words above describe?
</div>
<div>can anyone help me? thank you very much</div>