svn commit: r249745 - head/sys/vm

Alan Cox alc at FreeBSD.org
Mon Apr 22 01:26:14 UTC 2013


Author: alc
Date: Mon Apr 22 01:26:13 2013
New Revision: 249745
URL: http://svnweb.freebsd.org/changeset/base/249745

Log:
  Simplify vm_radix_{add,dec}lev().
  
  Sponsored by:	EMC / Isilon Storage Division

Modified:
  head/sys/vm/vm_radix.c

Modified: head/sys/vm/vm_radix.c
==============================================================================
--- head/sys/vm/vm_radix.c	Sun Apr 21 22:47:24 2013	(r249744)
+++ head/sys/vm/vm_radix.c	Mon Apr 22 01:26:13 2013	(r249745)
@@ -265,16 +265,19 @@ vm_radix_keybarr(struct vm_radix_node *r
 static __inline int
 vm_radix_addlev(vm_pindex_t *idx, boolean_t *levels, uint16_t ilev)
 {
-	vm_pindex_t wrapidx;
 
 	for (; levels[ilev] == FALSE ||
 	    vm_radix_slot(*idx, ilev) == (VM_RADIX_COUNT - 1); ilev--)
 		if (ilev == 0)
 			return (1);
-	wrapidx = *idx;
+
+	/*
+	 * The following computation cannot overflow because *idx's slot at
+	 * ilev is less than VM_RADIX_COUNT - 1.
+	 */
 	*idx = vm_radix_trimkey(*idx, ilev);
 	*idx += VM_RADIX_UNITLEVEL(ilev);
-	return (*idx < wrapidx);
+	return (0);
 }
 
 /*
@@ -286,17 +289,19 @@ vm_radix_addlev(vm_pindex_t *idx, boolea
 static __inline int
 vm_radix_declev(vm_pindex_t *idx, boolean_t *levels, uint16_t ilev)
 {
-	vm_pindex_t wrapidx;
 
 	for (; levels[ilev] == FALSE ||
 	    vm_radix_slot(*idx, ilev) == 0; ilev--)
 		if (ilev == 0)
 			return (1);
-	wrapidx = *idx;
+
+	/*
+	 * The following computation cannot overflow because *idx's slot at
+	 * ilev is greater than 0.
+	 */
 	*idx = vm_radix_trimkey(*idx, ilev);
-	*idx |= VM_RADIX_UNITLEVEL(ilev) - 1;
-	*idx -= VM_RADIX_UNITLEVEL(ilev);
-	return (*idx > wrapidx);
+	*idx -= 1;
+	return (0);
 }
 
 /*


More information about the svn-src-all mailing list