record perm vars only while resident stack frame is still up

This commit is contained in:
Mark Thom
2019-02-02 12:45:50 -07:00
parent 8f771792b3
commit a28c8934f3

View File

@@ -592,13 +592,14 @@ impl MachineState {
{ {
for (var, var_data) in alloc_locs { for (var, var_data) in alloc_locs {
match var_data { match var_data {
&VarData::Perm(p) if p > 0 => { &VarData::Perm(p) if p > 0 =>
let e = self.e; if !heap_locs.contains_key(var) {
let r = var_data.as_reg_type().reg_num(); let e = self.e;
let addr = self.and_stack[e][r].clone(); let r = var_data.as_reg_type().reg_num(); // crashes here.
let addr = self.and_stack[e][r].clone();
heap_locs.insert(var.clone(), addr); heap_locs.insert(var.clone(), addr);
}, },
&VarData::Temp(cn, _, _) if cn == chunk_num => { &VarData::Temp(cn, _, _) if cn == chunk_num => {
let r = var_data.as_reg_type(); let r = var_data.as_reg_type();