pub trait RegisterAllocator {
// Required methods
fn allocate_register(&mut self, var_name: &str) -> Result<String>;
fn free_register(&mut self, register: &str);
fn get_available_registers(&self) -> Vec<String>;
fn spill_register(&mut self, register: &str) -> Result<String>;
fn save_register_state(&mut self);
fn restore_register_state(&mut self);
}Expand description
Register allocation trait
Required Methods§
Sourcefn allocate_register(&mut self, var_name: &str) -> Result<String>
fn allocate_register(&mut self, var_name: &str) -> Result<String>
Allocate a register for a variable
Sourcefn free_register(&mut self, register: &str)
fn free_register(&mut self, register: &str)
Free a register
Sourcefn get_available_registers(&self) -> Vec<String>
fn get_available_registers(&self) -> Vec<String>
Get available registers
Sourcefn spill_register(&mut self, register: &str) -> Result<String>
fn spill_register(&mut self, register: &str) -> Result<String>
Spill a register to memory
Sourcefn save_register_state(&mut self)
fn save_register_state(&mut self)
Save register state
Sourcefn restore_register_state(&mut self)
fn restore_register_state(&mut self)
Restore register state