aboutsummaryrefslogtreecommitdiffstats
path: root/mps/code
diff options
context:
space:
mode:
Diffstat (limited to 'mps/code')
-rw-r--r--mps/code/cbs.c18
-rw-r--r--mps/code/splay.c4
-rw-r--r--mps/code/splay.h8
3 files changed, 13 insertions, 17 deletions
diff --git a/mps/code/cbs.c b/mps/code/cbs.c
index 73474a02de9..6eff37a844e 100644
--- a/mps/code/cbs.c
+++ b/mps/code/cbs.c
@@ -194,36 +194,32 @@ static Compare cbsSplayCompare(void *key, SplayNode node)
194/* cbsTestNode, cbsTestTree -- test for nodes larger than the S parameter */ 194/* cbsTestNode, cbsTestTree -- test for nodes larger than the S parameter */
195 195
196static Bool cbsTestNode(SplayTree tree, SplayNode node, 196static Bool cbsTestNode(SplayTree tree, SplayNode node,
197 void *closureP, unsigned long closureS) 197 void *closureP, Size size)
198{ 198{
199 Size size;
200 CBSBlock block; 199 CBSBlock block;
201 200
202 AVERT(SplayTree, tree); 201 AVERT(SplayTree, tree);
203 AVERT(SplayNode, node); 202 AVERT(SplayNode, node);
204 AVER(closureP == NULL); 203 AVER(closureP == NULL);
205 AVER(closureS > 0); 204 AVER(size > 0);
206 AVER(cbsOfSplayTree(tree)->fastFind); 205 AVER(cbsOfSplayTree(tree)->fastFind);
207 206
208 size = (Size)closureS;
209 block = cbsBlockOfSplayNode(node); 207 block = cbsBlockOfSplayNode(node);
210 208
211 return CBSBlockSize(block) >= size; 209 return CBSBlockSize(block) >= size;
212} 210}
213 211
214static Bool cbsTestTree(SplayTree tree, SplayNode node, 212static Bool cbsTestTree(SplayTree tree, SplayNode node,
215 void *closureP, unsigned long closureS) 213 void *closureP, Size size)
216{ 214{
217 Size size;
218 CBSBlock block; 215 CBSBlock block;
219 216
220 AVERT(SplayTree, tree); 217 AVERT(SplayTree, tree);
221 AVERT(SplayNode, node); 218 AVERT(SplayNode, node);
222 AVER(closureP == NULL); 219 AVER(closureP == NULL);
223 AVER(closureS > 0); 220 AVER(size > 0);
224 AVER(cbsOfSplayTree(tree)->fastFind); 221 AVER(cbsOfSplayTree(tree)->fastFind);
225 222
226 size = (Size)closureS;
227 block = cbsBlockOfSplayNode(node); 223 block = cbsBlockOfSplayNode(node);
228 224
229 return block->maxSize >= size; 225 return block->maxSize >= size;
@@ -1396,7 +1392,7 @@ Bool CBSFindFirst(Addr *baseReturn, Addr *limitReturn,
1396 1392
1397 METER_ACC(cbs->splaySearch, cbs->splayTreeSize); 1393 METER_ACC(cbs->splaySearch, cbs->splayTreeSize);
1398 found = SplayFindFirst(&node, splayTreeOfCBS(cbs), &cbsTestNode, 1394 found = SplayFindFirst(&node, splayTreeOfCBS(cbs), &cbsTestNode,
1399 &cbsTestTree, NULL, (unsigned long)size); 1395 &cbsTestTree, NULL, size);
1400 1396
1401 if (found) { 1397 if (found) {
1402 CBSBlock block; 1398 CBSBlock block;
@@ -1479,7 +1475,7 @@ Bool CBSFindLast(Addr *baseReturn, Addr *limitReturn,
1479 1475
1480 METER_ACC(cbs->splaySearch, cbs->splayTreeSize); 1476 METER_ACC(cbs->splaySearch, cbs->splayTreeSize);
1481 found = SplayFindLast(&node, splayTreeOfCBS(cbs), &cbsTestNode, 1477 found = SplayFindLast(&node, splayTreeOfCBS(cbs), &cbsTestNode,
1482 &cbsTestTree, NULL, (unsigned long)size); 1478 &cbsTestTree, NULL, size);
1483 if (found) { 1479 if (found) {
1484 CBSBlock block; 1480 CBSBlock block;
1485 1481
@@ -1573,7 +1569,7 @@ Bool CBSFindLargest(Addr *baseReturn, Addr *limitReturn,
1573 size = cbsBlockOfSplayNode(root)->maxSize; 1569 size = cbsBlockOfSplayNode(root)->maxSize;
1574 METER_ACC(cbs->splaySearch, cbs->splayTreeSize); 1570 METER_ACC(cbs->splaySearch, cbs->splayTreeSize);
1575 found = SplayFindFirst(&node, splayTreeOfCBS(cbs), &cbsTestNode, 1571 found = SplayFindFirst(&node, splayTreeOfCBS(cbs), &cbsTestNode,
1576 &cbsTestTree, NULL, (unsigned long)size); 1572 &cbsTestTree, NULL, size);
1577 AVER(found); /* maxSize is exact, so we will find it. */ 1573 AVER(found); /* maxSize is exact, so we will find it. */
1578 block = cbsBlockOfSplayNode(node); 1574 block = cbsBlockOfSplayNode(node);
1579 AVER(CBSBlockSize(block) >= size); 1575 AVER(CBSBlockSize(block) >= size);
diff --git a/mps/code/splay.c b/mps/code/splay.c
index 7979af342c4..4668a23e48a 100644
--- a/mps/code/splay.c
+++ b/mps/code/splay.c
@@ -883,7 +883,7 @@ static Compare SplayFindLastCompare(void *key, SplayNode node)
883Bool SplayFindFirst(SplayNode *nodeReturn, SplayTree tree, 883Bool SplayFindFirst(SplayNode *nodeReturn, SplayTree tree,
884 SplayTestNodeMethod testNode, 884 SplayTestNodeMethod testNode,
885 SplayTestTreeMethod testTree, 885 SplayTestTreeMethod testTree,
886 void *closureP, unsigned long closureS) 886 void *closureP, Size closureS)
887{ 887{
888 SplayNode node; 888 SplayNode node;
889 SplayFindClosureStruct closureStruct; 889 SplayFindClosureStruct closureStruct;
@@ -919,7 +919,7 @@ Bool SplayFindFirst(SplayNode *nodeReturn, SplayTree tree,
919Bool SplayFindLast(SplayNode *nodeReturn, SplayTree tree, 919Bool SplayFindLast(SplayNode *nodeReturn, SplayTree tree,
920 SplayTestNodeMethod testNode, 920 SplayTestNodeMethod testNode,
921 SplayTestTreeMethod testTree, 921 SplayTestTreeMethod testTree,
922 void *closureP, unsigned long closureS) 922 void *closureP, Size closureS)
923{ 923{
924 SplayNode node; 924 SplayNode node;
925 SplayFindClosureStruct closureStruct; 925 SplayFindClosureStruct closureStruct;
diff --git a/mps/code/splay.h b/mps/code/splay.h
index bdb4d888f87..8fa31af7fd3 100644
--- a/mps/code/splay.h
+++ b/mps/code/splay.h
@@ -17,9 +17,9 @@ typedef struct SplayNodeStruct *SplayNode;
17typedef unsigned Compare; 17typedef unsigned Compare;
18typedef Compare (*SplayCompareMethod)(void *key, SplayNode node); 18typedef Compare (*SplayCompareMethod)(void *key, SplayNode node);
19typedef Bool (*SplayTestNodeMethod)(SplayTree tree, SplayNode node, 19typedef Bool (*SplayTestNodeMethod)(SplayTree tree, SplayNode node,
20 void *closureP, unsigned long closureS); 20 void *closureP, Size closureS);
21typedef Bool (*SplayTestTreeMethod)(SplayTree tree, SplayNode node, 21typedef Bool (*SplayTestTreeMethod)(SplayTree tree, SplayNode node,
22 void *closureP, unsigned long closureS); 22 void *closureP, Size closureS);
23typedef void (*SplayUpdateNodeMethod)(SplayTree tree, SplayNode node, 23typedef void (*SplayUpdateNodeMethod)(SplayTree tree, SplayNode node,
24 SplayNode leftChild, 24 SplayNode leftChild,
25 SplayNode rightChild); 25 SplayNode rightChild);
@@ -67,11 +67,11 @@ extern SplayNode SplayTreeNext(SplayTree tree, SplayNode oldNode,
67extern Bool SplayFindFirst(SplayNode *nodeReturn, SplayTree tree, 67extern Bool SplayFindFirst(SplayNode *nodeReturn, SplayTree tree,
68 SplayTestNodeMethod testNode, 68 SplayTestNodeMethod testNode,
69 SplayTestTreeMethod testTree, 69 SplayTestTreeMethod testTree,
70 void *closureP, unsigned long closureS); 70 void *closureP, Size closureS);
71extern Bool SplayFindLast(SplayNode *nodeReturn, SplayTree tree, 71extern Bool SplayFindLast(SplayNode *nodeReturn, SplayTree tree,
72 SplayTestNodeMethod testNode, 72 SplayTestNodeMethod testNode,
73 SplayTestTreeMethod testTree, 73 SplayTestTreeMethod testTree,
74 void *closureP, unsigned long closureS); 74 void *closureP, Size closureS);
75 75
76extern void SplayNodeRefresh(SplayTree tree, SplayNode node, void *key); 76extern void SplayNodeRefresh(SplayTree tree, SplayNode node, void *key);
77 77