MCPcopy Create free account
hub / github.com/NICUP14/MiniLang / alloc_reg

Function alloc_reg

src/Def.py:434–450  ·  view source on GitHub ↗
(reg: Register = Register.id_max, opd: Operand = None)

Source from the content-addressed store, hash-verified

432
433
434def alloc_reg(reg: Register = Register.id_max, opd: Operand = None) -> Register:
435 if not reg_is_free(reg):
436 print_error('alloc_reg', f'Unavailable register {reg}')
437
438 if reg != Register.id_max:
439 reg_avail_map[reg] = False
440 if opd is not None:
441 opd_map[reg] = opd
442
443 return reg
444
445 reg = next(filter(lambda reg: reg_avail_map[reg], REGS))
446 reg_avail_map[reg] = False
447 if opd is not None:
448 opd_map[reg] = opd
449
450 return reg
451
452
453def free_reg(reg: Register):

Callers 5

gen_reg_swapFunction · 0.90
gen_reg_chownFunction · 0.90
gen_loadFunction · 0.90
gen_fun_callFunction · 0.90
gen_treeFunction · 0.90

Calls 2

reg_is_freeFunction · 0.85
print_errorFunction · 0.85

Tested by

no test coverage detected