void InsertOrMerge(MemoryRegion prev, MemoryRegion r, MemoryRegion next) { Contract.Ensures(Brk == Contract.OldValue(Brk)); if (MemoryRegion.CanMerge(prev, r)) { prev.Expand(r); return; } InsertNode(prev, r); TryMergeWithNext(r); }
bool TryMergeWithNext(MemoryRegion r) { Contract.Ensures(Brk == Contract.OldValue(Brk)); var next = r.Next; if (next != null && MemoryRegion.CanMerge(r, next)) { RemoveNode(r, next); r.Expand(next); return(true); } else { return(false); } }
bool TryMergeWithNext(MemoryRegion r) { Contract.Ensures(Brk == Contract.OldValue(Brk)); var next = r.Next; if (next != null && MemoryRegion.CanMerge(r, next)) { RemoveNode(r, next); r.Expand(next); return true; } else { return false; } }
bool TryMergeWithNext(MemoryRegion r) { var next = r.Next; if (next != null && MemoryRegion.CanMerge(r, next)) { RemoveNode(r, next); r.Expand(next); return true; } else { return false; } }
void InsertOrMerge(MemoryRegion prev, MemoryRegion r, MemoryRegion next) { if (MemoryRegion.CanMerge(prev, r)) { prev.Expand(r); return; } InsertNode(prev, r); TryMergeWithNext(r); }