From: Zack Weinberg Date: Sat, 24 Aug 2002 03:20:33 +0000 (+0000) Subject: ggc-page.c (compute_inverse): Short circuit calculation for object sizes larger than... X-Git-Tag: releases/gcc-3.3.0~3173 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=280cf02aff113def7aa6d7a4a7a527ca8fce4df4;p=thirdparty%2Fgcc.git ggc-page.c (compute_inverse): Short circuit calculation for object sizes larger than half a page. * ggc-page.c (compute_inverse): Short circuit calculation for object sizes larger than half a page. From-SVN: r56548 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 05a7437360a9..3cf590b0ebbb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-08-23 Zack Weinberg + + * ggc-page.c (compute_inverse): Short circuit calculation for + object sizes larger than half a page. + 2002-08-23 David Edelsohn * config/rs6000/rs6000.c (rs6000_elf_select_section): Treat diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c index af3af1ab0bba..294bdfc49e4a 100644 --- a/gcc/ggc-page.c +++ b/gcc/ggc-page.c @@ -1080,6 +1080,18 @@ compute_inverse (order) { unsigned size, inv, e; + /* There can be only one object per "page" in a bucket for sizes + larger than half a machine page; it will always have offset zero. */ + if (OBJECT_SIZE (order) > G.pagesize/2) + { + if (OBJECTS_PER_PAGE (order) != 1) + abort (); + + DIV_MULT (order) = 1; + DIV_SHIFT (order) = 0; + return; + } + size = OBJECT_SIZE (order); e = 0; while (size % 2 == 0)