From owner-svn-src-head@FreeBSD.ORG Mon Apr 22 01:26:14 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 8B28B1D2; Mon, 22 Apr 2013 01:26:14 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 7E1DE190B; Mon, 22 Apr 2013 01:26:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r3M1QDum030926; Mon, 22 Apr 2013 01:26:13 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r3M1QDf3030925; Mon, 22 Apr 2013 01:26:13 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201304220126.r3M1QDf3030925@svn.freebsd.org> From: Alan Cox Date: Mon, 22 Apr 2013 01:26:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r249745 - head/sys/vm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Apr 2013 01:26:14 -0000 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); } /*