aboutsummaryrefslogtreecommitdiffstats
path: root/mps/code
diff options
context:
space:
mode:
authorGareth Rees2013-05-31 00:09:33 +0100
committerGareth Rees2013-05-31 00:09:33 +0100
commit934ae05ca3c40eb957d5815c666d6b1cfef98fe7 (patch)
tree8c6a22ba92317a3b271ec70202a3e984757afd24 /mps/code
parentcaf194598595029b633efc74ea59c16124039a0e (diff)
downloademacs-934ae05ca3c40eb957d5815c666d6b1cfef98fe7.tar.gz
emacs-934ae05ca3c40eb957d5815c666d6b1cfef98fe7.zip
Rename the enumeration cbsfinddelete to finddelete in anticipation of it being shared between cbs and new freelist module.
Since ABQDisposition enumeration only has two values, it's better to use Bool. Copied from Perforce Change: 182347 ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code')
-rw-r--r--mps/code/abq.c20
-rw-r--r--mps/code/abq.h15
-rw-r--r--mps/code/abqtest.c8
-rw-r--r--mps/code/cbs.c35
-rw-r--r--mps/code/cbs.h14
-rw-r--r--mps/code/cbstest.c24
-rw-r--r--mps/code/mpm.h5
-rw-r--r--mps/code/mpmtypes.h12
-rw-r--r--mps/code/poolmv2.c19
-rw-r--r--mps/code/poolmvff.c8
10 files changed, 71 insertions, 89 deletions
diff --git a/mps/code/abq.c b/mps/code/abq.c
index aa796057acc..f9317c49728 100644
--- a/mps/code/abq.c
+++ b/mps/code/abq.c
@@ -241,17 +241,6 @@ Count ABQDepth(ABQ abq)
241} 241}
242 242
243 243
244/* ABQDispositionCheck -- check method for an ABQDisposition value */
245static Bool ABQDispositionCheck(ABQDisposition disposition)
246{
247 CHECKL(disposition == ABQDispositionKEEP
248 || disposition == ABQDispositionDELETE);
249 UNUSED(disposition); /* <code/mpm.c#check.unused> */
250
251 return TRUE;
252}
253
254
255/* ABQIterate -- call 'iterate' for each element in an ABQ */ 244/* ABQIterate -- call 'iterate' for each element in an ABQ */
256void ABQIterate(ABQ abq, ABQIterateMethod iterate, void *closureP, Size closureS) 245void ABQIterate(ABQ abq, ABQIterateMethod iterate, void *closureP, Size closureS)
257{ 246{
@@ -266,11 +255,12 @@ void ABQIterate(ABQ abq, ABQIterateMethod iterate, void *closureP, Size closureS
266 255
267 while (index != in) { 256 while (index != in) {
268 void *element = ABQElement(abq, index); 257 void *element = ABQElement(abq, index);
269 ABQDisposition disposition = ABQDispositionNONE; 258 Bool delete = FALSE;
270 Bool cont; 259 Bool cont;
271 cont = (*iterate)(&disposition, element, closureP, closureS); 260 cont = (*iterate)(&delete, element, closureP, closureS);
272 AVERT(ABQDisposition, disposition); 261 AVERT(Bool, cont);
273 if (disposition == ABQDispositionKEEP) { 262 AVERT(Bool, delete);
263 if (!delete) {
274 if (copy != index) 264 if (copy != index)
275 mps_lib_memcpy(ABQElement(abq, copy), element, abq->elementSize); 265 mps_lib_memcpy(ABQElement(abq, copy), element, abq->elementSize);
276 copy = ABQNextIndex(abq, copy); 266 copy = ABQNextIndex(abq, copy);
diff --git a/mps/code/abq.h b/mps/code/abq.h
index 08462c9192f..7a7cc2a65d9 100644
--- a/mps/code/abq.h
+++ b/mps/code/abq.h
@@ -24,8 +24,7 @@
24 24
25typedef struct ABQStruct *ABQ; 25typedef struct ABQStruct *ABQ;
26typedef Res (*ABQDescribeElement)(void *element, mps_lib_FILE *stream); 26typedef Res (*ABQDescribeElement)(void *element, mps_lib_FILE *stream);
27typedef unsigned ABQDisposition; 27typedef Bool (*ABQIterateMethod)(Bool *deleteReturn, void *element, void *closureP, Size closureS);
28typedef Bool (*ABQIterateMethod)(ABQDisposition *dispositionReturn, void *element, void *closureP, Size closureS);
29 28
30extern Res ABQInit(Arena arena, ABQ abq, void *owner, Count elements, Size elementSize); 29extern Res ABQInit(Arena arena, ABQ abq, void *owner, Count elements, Size elementSize);
31extern Bool ABQCheck(ABQ abq); 30extern Bool ABQCheck(ABQ abq);
@@ -59,18 +58,6 @@ typedef struct ABQStruct
59 Sig sig; 58 Sig sig;
60} ABQStruct; 59} ABQStruct;
61 60
62enum {
63 ABQIterationCONTINUE = 1, /* continue iterating */
64 ABQIterationSTOP, /* stop iterating */
65 ABQIterationNONE /* no iteration (error) */
66};
67
68enum {
69 ABQDispositionKEEP = 1, /* keep item in queue */
70 ABQDispositionDELETE, /* delete element from queue */
71 ABQDispositionNONE /* no disposition (error) */
72};
73
74#endif /* abq_h */ 61#endif /* abq_h */
75 62
76 63
diff --git a/mps/code/abqtest.c b/mps/code/abqtest.c
index 4588af97954..32987836dae 100644
--- a/mps/code/abqtest.c
+++ b/mps/code/abqtest.c
@@ -95,17 +95,17 @@ typedef struct TestClosureStruct {
95 Res res; 95 Res res;
96} TestClosureStruct; 96} TestClosureStruct;
97 97
98static Bool TestDeleteCallback(ABQDisposition *dispositionReturn, 98static Bool TestDeleteCallback(Bool *deleteReturn, void *element,
99 void *element, void *closureP, Size closureS) 99 void *closureP, Size closureS)
100{ 100{
101 TestBlock *a = (TestBlock *)element; 101 TestBlock *a = (TestBlock *)element;
102 TestClosure cl = (TestClosure)closureP; 102 TestClosure cl = (TestClosure)closureP;
103 UNUSED(closureS); 103 UNUSED(closureS);
104 if (*a == cl->b) { 104 if (*a == cl->b) {
105 *dispositionReturn = ABQDispositionDELETE; 105 *deleteReturn = TRUE;
106 cl->res = ResOK; 106 cl->res = ResOK;
107 } else { 107 } else {
108 *dispositionReturn = ABQDispositionKEEP; 108 *deleteReturn = FALSE;
109 } 109 }
110 return TRUE; 110 return TRUE;
111} 111}
diff --git a/mps/code/cbs.c b/mps/code/cbs.c
index 658af95c022..45a708f2ba7 100644
--- a/mps/code/cbs.c
+++ b/mps/code/cbs.c
@@ -690,13 +690,14 @@ void CBSIterate(CBS cbs, CBSIterateMethod iterate,
690} 690}
691 691
692 692
693/* CBSFindDeleteCheck -- check method for a CBSFindDelete value */ 693/* FindDeleteCheck -- check method for a FindDelete value */
694 694
695static Bool CBSFindDeleteCheck(CBSFindDelete findDelete) 695Bool FindDeleteCheck(FindDelete findDelete)
696{ 696{
697 CHECKL(findDelete == CBSFindDeleteNONE || findDelete == CBSFindDeleteLOW 697 CHECKL(findDelete == FindDeleteNONE
698 || findDelete == CBSFindDeleteHIGH 698 || findDelete == FindDeleteLOW
699 || findDelete == CBSFindDeleteENTIRE); 699 || findDelete == FindDeleteHIGH
700 || findDelete == FindDeleteENTIRE);
700 UNUSED(findDelete); /* <code/mpm.c#check.unused> */ 701 UNUSED(findDelete); /* <code/mpm.c#check.unused> */
701 702
702 return TRUE; 703 return TRUE;
@@ -708,7 +709,7 @@ static Bool CBSFindDeleteCheck(CBSFindDelete findDelete)
708static void cbsFindDeleteRange(Addr *baseReturn, Addr *limitReturn, 709static void cbsFindDeleteRange(Addr *baseReturn, Addr *limitReturn,
709 Addr *oldBaseReturn, Addr *oldLimitReturn, 710 Addr *oldBaseReturn, Addr *oldLimitReturn,
710 CBS cbs, Addr base, Addr limit, Size size, 711 CBS cbs, Addr base, Addr limit, Size size,
711 CBSFindDelete findDelete) 712 FindDelete findDelete)
712{ 713{
713 Bool callDelete = TRUE; 714 Bool callDelete = TRUE;
714 715
@@ -718,23 +719,23 @@ static void cbsFindDeleteRange(Addr *baseReturn, Addr *limitReturn,
718 AVER(base < limit); 719 AVER(base < limit);
719 AVER(size > 0); 720 AVER(size > 0);
720 AVER(AddrOffset(base, limit) >= size); 721 AVER(AddrOffset(base, limit) >= size);
721 AVERT(CBSFindDelete, findDelete); 722 AVERT(FindDelete, findDelete);
722 723
723 switch(findDelete) { 724 switch(findDelete) {
724 725
725 case CBSFindDeleteNONE: 726 case FindDeleteNONE:
726 callDelete = FALSE; 727 callDelete = FALSE;
727 break; 728 break;
728 729
729 case CBSFindDeleteLOW: 730 case FindDeleteLOW:
730 limit = AddrAdd(base, size); 731 limit = AddrAdd(base, size);
731 break; 732 break;
732 733
733 case CBSFindDeleteHIGH: 734 case FindDeleteHIGH:
734 base = AddrSub(limit, size); 735 base = AddrSub(limit, size);
735 break; 736 break;
736 737
737 case CBSFindDeleteENTIRE: 738 case FindDeleteENTIRE:
738 /* do nothing */ 739 /* do nothing */
739 break; 740 break;
740 741
@@ -762,7 +763,7 @@ static void cbsFindDeleteRange(Addr *baseReturn, Addr *limitReturn,
762 763
763Bool CBSFindFirst(Addr *baseReturn, Addr *limitReturn, 764Bool CBSFindFirst(Addr *baseReturn, Addr *limitReturn,
764 Addr *oldBaseReturn, Addr *oldLimitReturn, 765 Addr *oldBaseReturn, Addr *oldLimitReturn,
765 CBS cbs, Size size, CBSFindDelete findDelete) 766 CBS cbs, Size size, FindDelete findDelete)
766{ 767{
767 Bool found; 768 Bool found;
768 SplayNode node; 769 SplayNode node;
@@ -775,7 +776,7 @@ Bool CBSFindFirst(Addr *baseReturn, Addr *limitReturn,
775 AVER(size > 0); 776 AVER(size > 0);
776 AVER(SizeIsAligned(size, cbs->alignment)); 777 AVER(SizeIsAligned(size, cbs->alignment));
777 AVER(cbs->fastFind); 778 AVER(cbs->fastFind);
778 AVERT(CBSFindDelete, findDelete); 779 AVERT(FindDelete, findDelete);
779 780
780 METER_ACC(cbs->splaySearch, cbs->splayTreeSize); 781 METER_ACC(cbs->splaySearch, cbs->splayTreeSize);
781 found = SplayFindFirst(&node, splayTreeOfCBS(cbs), &cbsTestNode, 782 found = SplayFindFirst(&node, splayTreeOfCBS(cbs), &cbsTestNode,
@@ -801,7 +802,7 @@ Bool CBSFindFirst(Addr *baseReturn, Addr *limitReturn,
801 802
802Bool CBSFindLast(Addr *baseReturn, Addr *limitReturn, 803Bool CBSFindLast(Addr *baseReturn, Addr *limitReturn,
803 Addr *oldBaseReturn, Addr *oldLimitReturn, 804 Addr *oldBaseReturn, Addr *oldLimitReturn,
804 CBS cbs, Size size, CBSFindDelete findDelete) 805 CBS cbs, Size size, FindDelete findDelete)
805{ 806{
806 Bool found; 807 Bool found;
807 SplayNode node; 808 SplayNode node;
@@ -814,7 +815,7 @@ Bool CBSFindLast(Addr *baseReturn, Addr *limitReturn,
814 AVER(size > 0); 815 AVER(size > 0);
815 AVER(SizeIsAligned(size, cbs->alignment)); 816 AVER(SizeIsAligned(size, cbs->alignment));
816 AVER(cbs->fastFind); 817 AVER(cbs->fastFind);
817 AVERT(CBSFindDelete, findDelete); 818 AVERT(FindDelete, findDelete);
818 819
819 METER_ACC(cbs->splaySearch, cbs->splayTreeSize); 820 METER_ACC(cbs->splaySearch, cbs->splayTreeSize);
820 found = SplayFindLast(&node, splayTreeOfCBS(cbs), &cbsTestNode, 821 found = SplayFindLast(&node, splayTreeOfCBS(cbs), &cbsTestNode,
@@ -840,7 +841,7 @@ Bool CBSFindLast(Addr *baseReturn, Addr *limitReturn,
840 841
841Bool CBSFindLargest(Addr *baseReturn, Addr *limitReturn, 842Bool CBSFindLargest(Addr *baseReturn, Addr *limitReturn,
842 Addr *oldBaseReturn, Addr *oldLimitReturn, 843 Addr *oldBaseReturn, Addr *oldLimitReturn,
843 CBS cbs, CBSFindDelete findDelete) 844 CBS cbs, FindDelete findDelete)
844{ 845{
845 Bool found = FALSE; 846 Bool found = FALSE;
846 SplayNode root; 847 SplayNode root;
@@ -852,7 +853,7 @@ Bool CBSFindLargest(Addr *baseReturn, Addr *limitReturn,
852 AVER(baseReturn != NULL); 853 AVER(baseReturn != NULL);
853 AVER(limitReturn != NULL); 854 AVER(limitReturn != NULL);
854 AVER(cbs->fastFind); 855 AVER(cbs->fastFind);
855 AVERT(CBSFindDelete, findDelete); 856 AVERT(FindDelete, findDelete);
856 857
857 notEmpty = SplayRoot(&root, splayTreeOfCBS(cbs)); 858 notEmpty = SplayRoot(&root, splayTreeOfCBS(cbs));
858 if (notEmpty) { 859 if (notEmpty) {
diff --git a/mps/code/cbs.h b/mps/code/cbs.h
index 4ac99ad8254..544df0a0586 100644
--- a/mps/code/cbs.h
+++ b/mps/code/cbs.h
@@ -49,23 +49,15 @@ extern void CBSIterate(CBS cbs, CBSIterateMethod iterate,
49 49
50extern Res CBSDescribe(CBS cbs, mps_lib_FILE *stream); 50extern Res CBSDescribe(CBS cbs, mps_lib_FILE *stream);
51 51
52typedef unsigned CBSFindDelete;
53enum {
54 CBSFindDeleteNONE = 1,/* don't delete after finding */
55 CBSFindDeleteLOW, /* delete precise size from low end */
56 CBSFindDeleteHIGH, /* delete precise size from high end */
57 CBSFindDeleteENTIRE /* delete entire range */
58};
59
60extern Bool CBSFindFirst(Addr *baseReturn, Addr *limitReturn, 52extern Bool CBSFindFirst(Addr *baseReturn, Addr *limitReturn,
61 Addr *oldBaseReturn, Addr *oldLimitReturn, 53 Addr *oldBaseReturn, Addr *oldLimitReturn,
62 CBS cbs, Size size, CBSFindDelete findDelete); 54 CBS cbs, Size size, FindDelete findDelete);
63extern Bool CBSFindLast(Addr *baseReturn, Addr *limitReturn, 55extern Bool CBSFindLast(Addr *baseReturn, Addr *limitReturn,
64 Addr *oldBaseReturn, Addr *oldLimitReturn, 56 Addr *oldBaseReturn, Addr *oldLimitReturn,
65 CBS cbs, Size size, CBSFindDelete findDelete); 57 CBS cbs, Size size, FindDelete findDelete);
66extern Bool CBSFindLargest(Addr *baseReturn, Addr *limitReturn, 58extern Bool CBSFindLargest(Addr *baseReturn, Addr *limitReturn,
67 Addr *oldBaseReturn, Addr *oldLimitReturn, 59 Addr *oldBaseReturn, Addr *oldLimitReturn,
68 CBS cbs, CBSFindDelete findDelete); 60 CBS cbs, FindDelete findDelete);
69 61
70 62
71#endif /* cbs_h */ 63#endif /* cbs_h */
diff --git a/mps/code/cbstest.c b/mps/code/cbstest.c
index 9a3191530dc..3588d488204 100644
--- a/mps/code/cbstest.c
+++ b/mps/code/cbstest.c
@@ -317,7 +317,7 @@ static void deallocate(CBS cbs, Addr block, BT allocTable,
317 317
318 318
319static void find(CBS cbs, void *block, BT alloc, Size size, Bool high, 319static void find(CBS cbs, void *block, BT alloc, Size size, Bool high,
320 CBSFindDelete findDelete) 320 FindDelete findDelete)
321{ 321{
322 Bool expected, found; 322 Bool expected, found;
323 Index expectedBase, expectedLimit; 323 Index expectedBase, expectedLimit;
@@ -336,23 +336,23 @@ static void find(CBS cbs, void *block, BT alloc, Size size, Bool high,
336 remainderLimit = origLimit = addrOfIndex(block, expectedLimit); 336 remainderLimit = origLimit = addrOfIndex(block, expectedLimit);
337 337
338 switch(findDelete) { 338 switch(findDelete) {
339 case CBSFindDeleteNONE: { 339 case FindDeleteNONE: {
340 /* do nothing */ 340 /* do nothing */
341 } break; 341 } break;
342 case CBSFindDeleteENTIRE: { 342 case FindDeleteENTIRE: {
343 remainderBase = remainderLimit; 343 remainderBase = remainderLimit;
344 } break; 344 } break;
345 case CBSFindDeleteLOW: { 345 case FindDeleteLOW: {
346 expectedLimit = expectedBase + size; 346 expectedLimit = expectedBase + size;
347 remainderBase = addrOfIndex(block, expectedLimit); 347 remainderBase = addrOfIndex(block, expectedLimit);
348 } break; 348 } break;
349 case CBSFindDeleteHIGH: { 349 case FindDeleteHIGH: {
350 expectedBase = expectedLimit - size; 350 expectedBase = expectedLimit - size;
351 remainderLimit = addrOfIndex(block, expectedBase); 351 remainderLimit = addrOfIndex(block, expectedBase);
352 } break; 352 } break;
353 } 353 }
354 354
355 if (findDelete != CBSFindDeleteNONE) { 355 if (findDelete != FindDeleteNONE) {
356 newSize = AddrOffset(remainderBase, remainderLimit); 356 newSize = AddrOffset(remainderBase, remainderLimit);
357 } 357 }
358 358
@@ -371,7 +371,7 @@ static void find(CBS cbs, void *block, BT alloc, Size size, Bool high,
371 Insist(expectedBase == indexOfAddr(block, foundBase)); 371 Insist(expectedBase == indexOfAddr(block, foundBase));
372 Insist(expectedLimit == indexOfAddr(block, foundLimit)); 372 Insist(expectedLimit == indexOfAddr(block, foundLimit));
373 373
374 if (findDelete != CBSFindDeleteNONE) { 374 if (findDelete != FindDeleteNONE) {
375 Insist(oldBase == origBase); 375 Insist(oldBase == origBase);
376 Insist(oldLimit == origLimit); 376 Insist(oldLimit == origLimit);
377 BTSetRange(alloc, expectedBase, expectedLimit); 377 BTSetRange(alloc, expectedBase, expectedLimit);
@@ -397,7 +397,7 @@ extern int main(int argc, char *argv[])
397 BT allocTable; 397 BT allocTable;
398 Size size; 398 Size size;
399 Bool high; 399 Bool high;
400 CBSFindDelete findDelete = CBSFindDeleteNONE; 400 FindDelete findDelete = FindDeleteNONE;
401 401
402 randomize(argc, argv); 402 randomize(argc, argv);
403 403
@@ -445,10 +445,10 @@ extern int main(int argc, char *argv[])
445 switch(cbsRnd(6)) { 445 switch(cbsRnd(6)) {
446 case 0: 446 case 0:
447 case 1: 447 case 1:
448 case 2: findDelete = CBSFindDeleteNONE; break; 448 case 2: findDelete = FindDeleteNONE; break;
449 case 3: findDelete = CBSFindDeleteLOW; break; 449 case 3: findDelete = FindDeleteLOW; break;
450 case 4: findDelete = CBSFindDeleteHIGH; break; 450 case 4: findDelete = FindDeleteHIGH; break;
451 case 5: findDelete = CBSFindDeleteENTIRE; break; 451 case 5: findDelete = FindDeleteENTIRE; break;
452 } 452 }
453 find(cbs, dummyBlock, allocTable, size, high, findDelete); 453 find(cbs, dummyBlock, allocTable, size, high, findDelete);
454 } break; 454 } break;
diff --git a/mps/code/mpm.h b/mps/code/mpm.h
index 4292f9fa671..1f7ffa15f9b 100644
--- a/mps/code/mpm.h
+++ b/mps/code/mpm.h
@@ -799,6 +799,11 @@ extern AllocPattern AllocPatternRamp(void);
799extern AllocPattern AllocPatternRampCollectAll(void); 799extern AllocPattern AllocPatternRampCollectAll(void);
800 800
801 801
802/* FindDelete -- see <code/cbs.c> and <code/freelist.c> */
803
804extern Bool FindDeleteCheck(FindDelete findDelete);
805
806
802/* Format Interface -- see <code/format.c> */ 807/* Format Interface -- see <code/format.c> */
803 808
804extern Bool FormatCheck(Format format); 809extern Bool FormatCheck(Format format);
diff --git a/mps/code/mpmtypes.h b/mps/code/mpmtypes.h
index e9797863bb8..49265c35a72 100644
--- a/mps/code/mpmtypes.h
+++ b/mps/code/mpmtypes.h
@@ -109,6 +109,7 @@ typedef struct AllocPatternStruct *AllocPattern;
109typedef struct AllocFrameStruct *AllocFrame; /* <design/alloc-frame/> */ 109typedef struct AllocFrameStruct *AllocFrame; /* <design/alloc-frame/> */
110typedef struct ReservoirStruct *Reservoir; /* <design/reservoir/> */ 110typedef struct ReservoirStruct *Reservoir; /* <design/reservoir/> */
111typedef struct StackContextStruct *StackContext; 111typedef struct StackContextStruct *StackContext;
112typedef unsigned FindDelete; /* <design/cbs/> */
112 113
113 114
114/* Arena*Method -- see <code/mpmst.h#ArenaClassStruct> */ 115/* Arena*Method -- see <code/mpmst.h#ArenaClassStruct> */
@@ -424,6 +425,17 @@ enum {
424}; 425};
425 426
426 427
428/* FindDelete operations -- see <design/cbs/> */
429
430enum {
431 FindDeleteNONE = 1, /* don't delete after finding */
432 FindDeleteLOW, /* delete precise size from low end */
433 FindDeleteHIGH, /* delete precise size from high end */
434 FindDeleteENTIRE, /* delete entire range */
435 FindDeleteLIMIT /* not a FindDelete operation; the limit of the enum. */
436};
437
438
427/* Types for WriteF formats */ 439/* Types for WriteF formats */
428/* These should be used with calls to WriteF. */ 440/* These should be used with calls to WriteF. */
429/* These must be unpromotable types. */ 441/* These must be unpromotable types. */
diff --git a/mps/code/poolmv2.c b/mps/code/poolmv2.c
index ac0e4e87b50..e2642f23c43 100644
--- a/mps/code/poolmv2.c
+++ b/mps/code/poolmv2.c
@@ -588,16 +588,16 @@ done:
588 588
589 589
590/* MVTDeleteOverlapping -- ABQIterate callback used by MVTInsert and 590/* MVTDeleteOverlapping -- ABQIterate callback used by MVTInsert and
591 * MVTDelete. It receives a Range in its closureP argument, and 591 * MVTDelete. It receives a Range in its closureP argument, and sets
592 * returns the DELETE disposition for ranges in the ABQ that overlap 592 * *deleteReturn to TRUE for ranges in the ABQ that overlap with it,
593 * with it, and the KEEP disposition for ranges that do not. 593 * and FALSE for ranges that do not.
594 */ 594 */
595static Bool MVTDeleteOverlapping(ABQDisposition *dispositionReturn, 595static Bool MVTDeleteOverlapping(Bool *deleteReturn, void *element,
596 void *element, void *closureP, Size closureS) 596 void *closureP, Size closureS)
597{ 597{
598 Range oldRange, newRange; 598 Range oldRange, newRange;
599 599
600 AVER(dispositionReturn != NULL); 600 AVER(deleteReturn != NULL);
601 AVER(element != NULL); 601 AVER(element != NULL);
602 AVER(closureP != NULL); 602 AVER(closureP != NULL);
603 UNUSED(closureS); 603 UNUSED(closureS);
@@ -605,12 +605,7 @@ static Bool MVTDeleteOverlapping(ABQDisposition *dispositionReturn,
605 oldRange = element; 605 oldRange = element;
606 newRange = closureP; 606 newRange = closureP;
607 607
608 if (RangesOverlap(oldRange, newRange)) { 608 *deleteReturn = RangesOverlap(oldRange, newRange);
609 *dispositionReturn = ABQDispositionDELETE;
610 } else {
611 *dispositionReturn = ABQDispositionKEEP;
612 }
613
614 return TRUE; 609 return TRUE;
615} 610}
616 611
diff --git a/mps/code/poolmvff.c b/mps/code/poolmvff.c
index 95e09d90b26..e5335377175 100644
--- a/mps/code/poolmvff.c
+++ b/mps/code/poolmvff.c
@@ -247,7 +247,7 @@ static Bool MVFFFindFirstFree(Addr *baseReturn, Addr *limitReturn,
247 MVFF mvff, Size size) 247 MVFF mvff, Size size)
248{ 248{
249 Bool foundBlock; 249 Bool foundBlock;
250 CBSFindDelete findDelete; 250 FindDelete findDelete;
251 Addr oldBase, oldLimit; 251 Addr oldBase, oldLimit;
252 252
253 AVER(baseReturn != NULL); 253 AVER(baseReturn != NULL);
@@ -256,7 +256,7 @@ static Bool MVFFFindFirstFree(Addr *baseReturn, Addr *limitReturn,
256 AVER(size > 0); 256 AVER(size > 0);
257 AVER(SizeIsAligned(size, PoolAlignment(MVFF2Pool(mvff)))); 257 AVER(SizeIsAligned(size, PoolAlignment(MVFF2Pool(mvff))));
258 258
259 findDelete = mvff->slotHigh ? CBSFindDeleteHIGH : CBSFindDeleteLOW; 259 findDelete = mvff->slotHigh ? FindDeleteHIGH : FindDeleteLOW;
260 260
261 foundBlock = 261 foundBlock =
262 (mvff->firstFit ? CBSFindFirst : CBSFindLast) 262 (mvff->firstFit ? CBSFindFirst : CBSFindLast)
@@ -370,7 +370,7 @@ static Res MVFFBufferFill(Addr *baseReturn, Addr *limitReturn,
370 370
371 /* Hoping the largest is big enough, delete it and return if small. */ 371 /* Hoping the largest is big enough, delete it and return if small. */
372 foundBlock = CBSFindLargest(&base, &limit, &oldBase, &oldLimit, 372 foundBlock = CBSFindLargest(&base, &limit, &oldBase, &oldLimit,
373 CBSOfMVFF(mvff), CBSFindDeleteENTIRE); 373 CBSOfMVFF(mvff), FindDeleteENTIRE);
374 if (foundBlock && AddrOffset(base, limit) < size) { 374 if (foundBlock && AddrOffset(base, limit) < size) {
375 Addr newBase, newLimit; 375 Addr newBase, newLimit;
376 foundBlock = FALSE; 376 foundBlock = FALSE;
@@ -388,7 +388,7 @@ static Res MVFFBufferFill(Addr *baseReturn, Addr *limitReturn,
388 if (res != ResOK) 388 if (res != ResOK)
389 return res; 389 return res;
390 foundBlock = CBSFindLargest(&base, &limit, &oldBase, &oldLimit, 390 foundBlock = CBSFindLargest(&base, &limit, &oldBase, &oldLimit,
391 CBSOfMVFF(mvff), CBSFindDeleteENTIRE); 391 CBSOfMVFF(mvff), FindDeleteENTIRE);
392 AVER(foundBlock); /* We will find the new segment. */ 392 AVER(foundBlock); /* We will find the new segment. */
393 } 393 }
394 394