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