Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- impl Codegen {
- fn do_some(&mut) {
- let reg:Register;
- reg.free(self.unspill());
- }
- fn unspill(&mut self) -> Box<dyn FnMut(&ScratchRegister, StackRegister, &NEWTypes) -> ()> {
- Box::new(
- |reg: &ScratchRegister, spilled: StackRegister, type_decl: &NEWTypes| {
- writeln!(
- self.output,
- "\tmovq {}, {}",
- spilled.name(),
- reg.name(type_decl),
- )
- .unwrap();
- },
- )
- }
- }
- impl ScratchRegister {
- fn free(
- &mut self,
- type_decl: &NEWTypes,
- mut unspill: Box<dyn FnMut(&ScratchRegister, StackRegister, &NEWTypes) -> ()>,
- ) {
- if self.spill_addr.len() > 0 {
- let spilled_addr = self.spill_addr.pop().unwrap();
- unspill(&*self, spilled_addr, type_decl);
- } else {
- self.in_use = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement