diff options
| author | Richard Brooksby | 2012-03-27 17:15:25 +0100 |
|---|---|---|
| committer | Richard Brooksby | 2012-03-27 17:15:25 +0100 |
| commit | 382d044e970ec1beae9593d6a3ae22156e53a8a4 (patch) | |
| tree | 98921884f5b612bdf493a5da74a7c17e2503b455 /mps/code | |
| parent | 5225a4be56d297778ab900f3e678b7374135ab88 (diff) | |
| download | emacs-382d044e970ec1beae9593d6a3ae22156e53a8a4.tar.gz emacs-382d044e970ec1beae9593d6a3ae22156e53a8a4.zip | |
Cbs and splay now pass size through as closure parameters, rather than messing with unsigned long.
Copied from Perforce
Change: 177816
ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code')
| -rw-r--r-- | mps/code/cbs.c | 18 | ||||
| -rw-r--r-- | mps/code/splay.c | 4 | ||||
| -rw-r--r-- | mps/code/splay.h | 8 |
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 | ||
| 196 | static Bool cbsTestNode(SplayTree tree, SplayNode node, | 196 | static 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 | ||
| 214 | static Bool cbsTestTree(SplayTree tree, SplayNode node, | 212 | static 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) | |||
| 883 | Bool SplayFindFirst(SplayNode *nodeReturn, SplayTree tree, | 883 | Bool 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, | |||
| 919 | Bool SplayFindLast(SplayNode *nodeReturn, SplayTree tree, | 919 | Bool 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; | |||
| 17 | typedef unsigned Compare; | 17 | typedef unsigned Compare; |
| 18 | typedef Compare (*SplayCompareMethod)(void *key, SplayNode node); | 18 | typedef Compare (*SplayCompareMethod)(void *key, SplayNode node); |
| 19 | typedef Bool (*SplayTestNodeMethod)(SplayTree tree, SplayNode node, | 19 | typedef Bool (*SplayTestNodeMethod)(SplayTree tree, SplayNode node, |
| 20 | void *closureP, unsigned long closureS); | 20 | void *closureP, Size closureS); |
| 21 | typedef Bool (*SplayTestTreeMethod)(SplayTree tree, SplayNode node, | 21 | typedef Bool (*SplayTestTreeMethod)(SplayTree tree, SplayNode node, |
| 22 | void *closureP, unsigned long closureS); | 22 | void *closureP, Size closureS); |
| 23 | typedef void (*SplayUpdateNodeMethod)(SplayTree tree, SplayNode node, | 23 | typedef 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, | |||
| 67 | extern Bool SplayFindFirst(SplayNode *nodeReturn, SplayTree tree, | 67 | extern 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); |
| 71 | extern Bool SplayFindLast(SplayNode *nodeReturn, SplayTree tree, | 71 | extern 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 | ||
| 76 | extern void SplayNodeRefresh(SplayTree tree, SplayNode node, void *key); | 76 | extern void SplayNodeRefresh(SplayTree tree, SplayNode node, void *key); |
| 77 | 77 | ||