From 382d044e970ec1beae9593d6a3ae22156e53a8a4 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Tue, 27 Mar 2012 17:15:25 +0100 Subject: [PATCH] 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 --- mps/code/cbs.c | 18 +++++++----------- mps/code/splay.c | 4 ++-- 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) /* cbsTestNode, cbsTestTree -- test for nodes larger than the S parameter */ static Bool cbsTestNode(SplayTree tree, SplayNode node, - void *closureP, unsigned long closureS) + void *closureP, Size size) { - Size size; CBSBlock block; AVERT(SplayTree, tree); AVERT(SplayNode, node); AVER(closureP == NULL); - AVER(closureS > 0); + AVER(size > 0); AVER(cbsOfSplayTree(tree)->fastFind); - size = (Size)closureS; block = cbsBlockOfSplayNode(node); return CBSBlockSize(block) >= size; } static Bool cbsTestTree(SplayTree tree, SplayNode node, - void *closureP, unsigned long closureS) + void *closureP, Size size) { - Size size; CBSBlock block; AVERT(SplayTree, tree); AVERT(SplayNode, node); AVER(closureP == NULL); - AVER(closureS > 0); + AVER(size > 0); AVER(cbsOfSplayTree(tree)->fastFind); - size = (Size)closureS; block = cbsBlockOfSplayNode(node); return block->maxSize >= size; @@ -1396,7 +1392,7 @@ Bool CBSFindFirst(Addr *baseReturn, Addr *limitReturn, METER_ACC(cbs->splaySearch, cbs->splayTreeSize); found = SplayFindFirst(&node, splayTreeOfCBS(cbs), &cbsTestNode, - &cbsTestTree, NULL, (unsigned long)size); + &cbsTestTree, NULL, size); if (found) { CBSBlock block; @@ -1479,7 +1475,7 @@ Bool CBSFindLast(Addr *baseReturn, Addr *limitReturn, METER_ACC(cbs->splaySearch, cbs->splayTreeSize); found = SplayFindLast(&node, splayTreeOfCBS(cbs), &cbsTestNode, - &cbsTestTree, NULL, (unsigned long)size); + &cbsTestTree, NULL, size); if (found) { CBSBlock block; @@ -1573,7 +1569,7 @@ Bool CBSFindLargest(Addr *baseReturn, Addr *limitReturn, size = cbsBlockOfSplayNode(root)->maxSize; METER_ACC(cbs->splaySearch, cbs->splayTreeSize); found = SplayFindFirst(&node, splayTreeOfCBS(cbs), &cbsTestNode, - &cbsTestTree, NULL, (unsigned long)size); + &cbsTestTree, NULL, size); AVER(found); /* maxSize is exact, so we will find it. */ block = cbsBlockOfSplayNode(node); 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) Bool SplayFindFirst(SplayNode *nodeReturn, SplayTree tree, SplayTestNodeMethod testNode, SplayTestTreeMethod testTree, - void *closureP, unsigned long closureS) + void *closureP, Size closureS) { SplayNode node; SplayFindClosureStruct closureStruct; @@ -919,7 +919,7 @@ Bool SplayFindFirst(SplayNode *nodeReturn, SplayTree tree, Bool SplayFindLast(SplayNode *nodeReturn, SplayTree tree, SplayTestNodeMethod testNode, SplayTestTreeMethod testTree, - void *closureP, unsigned long closureS) + void *closureP, Size closureS) { SplayNode node; 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; typedef unsigned Compare; typedef Compare (*SplayCompareMethod)(void *key, SplayNode node); typedef Bool (*SplayTestNodeMethod)(SplayTree tree, SplayNode node, - void *closureP, unsigned long closureS); + void *closureP, Size closureS); typedef Bool (*SplayTestTreeMethod)(SplayTree tree, SplayNode node, - void *closureP, unsigned long closureS); + void *closureP, Size closureS); typedef void (*SplayUpdateNodeMethod)(SplayTree tree, SplayNode node, SplayNode leftChild, SplayNode rightChild); @@ -67,11 +67,11 @@ extern SplayNode SplayTreeNext(SplayTree tree, SplayNode oldNode, extern Bool SplayFindFirst(SplayNode *nodeReturn, SplayTree tree, SplayTestNodeMethod testNode, SplayTestTreeMethod testTree, - void *closureP, unsigned long closureS); + void *closureP, Size closureS); extern Bool SplayFindLast(SplayNode *nodeReturn, SplayTree tree, SplayTestNodeMethod testNode, SplayTestTreeMethod testTree, - void *closureP, unsigned long closureS); + void *closureP, Size closureS); extern void SplayNodeRefresh(SplayTree tree, SplayNode node, void *key);