gcj performance on Solaris 2.6

Jeff Sturm jsturm@one-point.com
Sun Jul 29 20:34:00 GMT 2001


On Mon, 30 Jul 2001, Bryce McKinlay wrote:
> 
> > I built one application library at -O0, -O2 and -O3 with the patch below,
> > and at -O2 unpatched for comparison.
> >
> >    text    data     bss     dec     hex filename
> > 1659369  247180     704 1907253  1d1a35 libjacl-O0.so
> > 2474525  243612     704 2718841  297c79 libjacl-O2-unpatched.so
> > 1354881  237836     704 1593421  18504d libjacl-O2.so
> > 1418826  236272     704 1655802  1943fa libjacl-O3.so
> 
> I applied this patch and found it made no difference to the size of a libgcj
> built with -O2. Any ideas why?

I forgot to mention I compiled the entire app in one pass, i.e.:

gcj -O2 -fPIC -shared $(srcs) -o libjacl.so

otherwise inlining across classes does not yet work.  I'd like to try
building libgcj this way, perhaps into one object per package.

BTW, I find the backend tends to ICE when inlining large packages like
this.  Below is a possible fix to duplicate_eh_regions():

Index: except.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/except.c,v
retrieving revision 1.143.2.13
diff -u -r1.143.2.13 except.c
--- except.c	2001/06/08 22:55:33	1.143.2.13
+++ except.c	2001/07/30 03:30:56
@@ -1448,8 +1448,10 @@
 	cur->inner = root;
 
       for (i = 1; i <= ifun_last_region_number; ++i)
-	if (n_array[i]->outer == NULL)
-	  n_array[i]->outer = cur;
+	{
+	  if (n_array[i] && n_array[i]->outer == NULL)
+	    n_array[i]->outer = cur;
+	}
     }
   else
     {




More information about the Java mailing list