

By requiring that compound pages implement destructors we can drop some code
from put_page().


---

 25-akpm/mm/swap.c |    9 ++++-----
 1 files changed, 4 insertions(+), 5 deletions(-)

diff -puN mm/swap.c~simplify-put_page mm/swap.c
--- 25/mm/swap.c~simplify-put_page	2004-04-23 03:42:12.730149176 -0700
+++ 25-akpm/mm/swap.c	2004-04-23 03:43:59.160969232 -0700
@@ -41,11 +41,10 @@ void put_page(struct page *page)
 	if (unlikely(PageCompound(page))) {
 		page = (struct page *)page->private;
 		if (put_page_testzero(page)) {
-			if (page[1].mapping) {	/* destructor? */
-				(*(void (*)(struct page *))page[1].mapping)(page);
-			} else {
-				__page_cache_release(page);
-			}
+			void (*dtor)(struct page *page);
+
+			dtor = (void (*)(struct page *))page[1].mapping;
+			(*dtor)(page);
 		}
 		return;
 	}

_
