diff --git a/mps/code/arena.c b/mps/code/arena.c index 92ffcffa347..bcbb795b2de 100644 --- a/mps/code/arena.c +++ b/mps/code/arena.c @@ -156,6 +156,15 @@ Bool ArenaClassCheck(ArenaClass klass) CHECKL(FUNCHECK(klass->compact)); CHECKL(FUNCHECK(klass->pagesMarkAllocated)); CHECKL(FUNCHECK(klass->chunkPageMapped)); + + /* Check that arena classes override sets of related methods. */ + CHECKL((klass->init == ArenaAbsInit) + == (klass->instClassStruct.finish == ArenaAbsFinish)); + CHECKL((klass->create == ArenaNoCreate) + == (klass->destroy == ArenaNoDestroy)); + CHECKL((klass->chunkInit == ArenaNoChunkInit) + == (klass->chunkFinish == ArenaNoChunkFinish)); + CHECKS(ArenaClass, klass); return TRUE; } diff --git a/mps/code/buffer.c b/mps/code/buffer.c index 908bb532b24..e80ba95074c 100644 --- a/mps/code/buffer.c +++ b/mps/code/buffer.c @@ -1014,6 +1014,13 @@ Bool BufferClassCheck(BufferClass klass) CHECKL(FUNCHECK(klass->rankSet)); CHECKL(FUNCHECK(klass->setRankSet)); CHECKL(FUNCHECK(klass->reassignSeg)); + + /* Check that buffer classes override sets of related methods. */ + CHECKL((klass->init == BufferAbsInit) + == (klass->instClassStruct.finish == BufferAbsFinish)); + CHECKL((klass->attach == bufferTrivAttach) + == (klass->detach == bufferTrivDetach)); + CHECKS(BufferClass, klass); return TRUE; } diff --git a/mps/code/land.c b/mps/code/land.c index ce1ed275777..706ee1bcad4 100644 --- a/mps/code/land.c +++ b/mps/code/land.c @@ -12,6 +12,12 @@ SRCID(land, "$Id$"); +/* Forward declarations */ + +static Res landNoInsert(Range rangeReturn, Land land, Range range); +static Res landNoDelete(Range rangeReturn, Land land, Range range); + + /* FindDeleteCheck -- check method for a FindDelete value */ Bool FindDeleteCheck(FindDelete findDelete) @@ -409,6 +415,12 @@ Bool LandClassCheck(LandClass klass) CHECKL(FUNCHECK(klass->findLast)); CHECKL(FUNCHECK(klass->findLargest)); CHECKL(FUNCHECK(klass->findInZones)); + + /* Check that buffer classes override sets of related methods. */ + CHECKL((klass->init == LandAbsInit) + == (klass->instClassStruct.finish == LandAbsFinish)); + CHECKL((klass->insert == landNoInsert) == (klass->delete == landNoDelete)); + CHECKS(LandClass, klass); return TRUE; } diff --git a/mps/code/seg.c b/mps/code/seg.c index 2fb2335c1db..8b6426e2998 100644 --- a/mps/code/seg.c +++ b/mps/code/seg.c @@ -1993,13 +1993,13 @@ Bool SegClassCheck(SegClass klass) CHECKL(FUNCHECK(klass->walk)); /* Check that segment classes override sets of related methods. */ - AVER((klass->init == SegAbsInit) - == (klass->instClassStruct.finish == SegAbsFinish)); - AVER((klass->init == gcSegInit) - == (klass->instClassStruct.finish == gcSegFinish)); - AVER((klass->merge == segTrivMerge) == (klass->split == segTrivSplit)); - AVER((klass->fix == segNoFix) == (klass->fixEmergency == segNoFix)); - AVER((klass->fix == segNoFix) == (klass->reclaim == segNoReclaim)); + CHECKL((klass->init == SegAbsInit) + == (klass->instClassStruct.finish == SegAbsFinish)); + CHECKL((klass->init == gcSegInit) + == (klass->instClassStruct.finish == gcSegFinish)); + CHECKL((klass->merge == segTrivMerge) == (klass->split == segTrivSplit)); + CHECKL((klass->fix == segNoFix) == (klass->fixEmergency == segNoFix)); + CHECKL((klass->fix == segNoFix) == (klass->reclaim == segNoReclaim)); CHECKS(SegClass, klass); return TRUE;