1356c1356
< TLB::serialize(std::ostream &os)
---
> TLB::serialize(CheckpointOut &cp) const
1363,1372c1363,1365
< int *free_list = (int*)malloc(sizeof(int) * size);
< int cntr = 0;
< std::list<TlbEntry*>::iterator i;
< i = freeList.begin();
< while (i != freeList.end()) {
< free_list[cntr++] = ((size_t)*i - (size_t)tlb)/ sizeof(TlbEntry);
< i++;
< }
< SERIALIZE_SCALAR(cntr);
< SERIALIZE_ARRAY(free_list, cntr);
---
> std::vector<int> free_list;
> for (const TlbEntry *entry : freeList)
> free_list.push_back(entry - tlb);
1373a1367,1368
> SERIALIZE_CONTAINER(free_list);
>
1384,1385c1379,1380
< nameOut(os, csprintf("%s.PTE%d", name(), x));
< tlb[x].serialize(os);
---
> ScopedCheckpointSection sec(cp, csprintf("PTE%d", x));
> tlb[x].serialize(cp);
1391c1386
< TLB::unserialize(Checkpoint *cp, const std::string &section)
---
> TLB::unserialize(CheckpointIn &cp)
1395c1390
< paramIn(cp, section, "size", oldSize);
---
> paramIn(cp, "size", oldSize);
1401,1404c1396,1397
< int cntr;
< UNSERIALIZE_SCALAR(cntr);
<
< int *free_list = (int*)malloc(sizeof(int) * cntr);
---
> std::vector<int> free_list;
> UNSERIALIZE_CONTAINER(free_list);
1406,1408c1399,1400
< UNSERIALIZE_ARRAY(free_list, cntr);
< for (int x = 0; x < cntr; x++)
< freeList.push_back(&tlb[free_list[x]]);
---
> for (int idx : free_list)
> freeList.push_back(&tlb[idx]);
1421c1413,1414
< tlb[x].unserialize(cp, csprintf("%s.PTE%d", section, x));
---
> ScopedCheckpointSection sec(cp, csprintf("PTE%d", x));
> tlb[x].unserialize(cp);