[Mono-list] mcs compiles on linux. Now what?

Piers Haken piersh@friskit.com
Fri, 8 Mar 2002 00:37:13 -0800

Yes indeed this is a huge achievment.

How long do you recon until we're dogfooding? ie ((mcs compiler built by
csc) builds mcs) builds mcs), all running on linux?

what do you need?


-----Original Message-----
From: Ravi Pratap [mailto:ravi@ximian.com]
Sent: Thursday, March 07, 2002 11:30 PM
To: Paolo Molaro
Cc: Mono List
Subject: Re: [Mono-list] mcs compiles on linux. Now what?

Wow Paolo !!

	You totally rule - this is great news ! :-)



On Thu, 2002-03-07 at 13:08, Paolo Molaro wrote:
> Yes, you read that right, I managed to compile mcs on linux.
> Here it is what you need if you want to try it at home:
> latest cvs corlib, mcs and runtime.
> Configure the runtime with the --with-gc option, since the compiler
> use loads of memory while running. You can use the copy found in the
> libgc module or, better, install the development libraries for libgc
> from your distribution vendor: on debian it's as easy as:
> 	apt-get install libgc6-dev
> You'll need to compile mcs with the interpreter:
> mint /somewhere/mcs.exe  --target exe -o mcs.exe assign.cs
> driver.cs cs-parser.cs cs-tokenizer.cs tree.cs location.cs class.cs 
> codegen.cs const.cs constant.cs decl.cs delegate.cs enum.cs ecore.cs 
> expression.cs genericparser.cs interface.cs literal.cs modifiers.cs 
> namespace.cs parameter.cs report.cs rootcontext.cs statement.cs 
> statementCollection.cs support.cs typemanager.cs
> (it should be all in one line).
> The sources of mcs I used are from a couple of days ago, but the
> could work as well, you just need to change in interfaces.cs
> the two spots where DefineType() and DefineNestedType(): change the
> to "(Type)null" and the compilation should complete.
> Note: it took from 14 to 20 minutes to build on my PIII 1.1 with the
> debugging mint, you may want to compile the runtime with CFLAGS=-O2
> and set DEBUG_INTERP to 0 in interp.c to save a couple of minutes.
> The bad news is that the compiled mcs crashes, because some field
> are wrong and this confuses the runtime (we still don't have a
> hint, hint).
> So, where do we go from here?
> We need three things:
> 1) make the JIT work with the Boehm garbage collector (it has weird
> crashes, specially when running mcs) so that we can compile mcs faster
> and track the down bugs faster.
> 2) optimize some classes in corlib that are slowing down the
> (more on this later)
> 3) try compiling your own programs/libraries with mcs on linux and
> report the failures and specially if the generated program works:
> points to anyone that can reproduce bugs with small test cases.
> Flood bugzilla with compilation bug reports. Help us reporting the
> OS/runtime you used and tell us if the program compiles fine in
> (with mcs) but not on linux. You can also start compiling our test
> (in mono/mono/tests/*.cs and mcs/tests/test-*.cs) and report which
> program compiled but failed to run. Your help with these tests is very
> important now.
> If you want to optimize corlib, here is some profile data:
> System.Collections.Hashtable::Find() takes more than 40% of the
> time (it's called 522682 times). Hashtable::KeyEquals() takes about
> of the running time and is called 26880116 times.
> This suggest we may be using bad hash functions or that the hashtable
> doesn't resize correctly, since the average compare per lookup is
> greater than 5 (it should be about 1). So check the sources for
> bad GetHashCode() implementations, create tests to check that the
> hashtable behaves correctly when expanding.
> Another abvious culprit is String.IndexOf(string) and it's BoyerMoore
> helper function: help replace it with a fast implementation.
> Thanks!
> lupus
> -- 
> -----------------------------------------------------------------
> lupus@debian.org                                     debian/rules
> lupus@ximian.com                             Monkeys do it better
> _______________________________________________
> Mono-list maillist  -  Mono-list@ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
"If you're smart, you'll be humble. There always is somebody
who hasn't read a book and knows twice as much as you do."

              -- David Duchovny in Readers' Digest

	Ravi Pratap M                    <ravi@ximian.com>

Mono-list maillist  -  Mono-list@ximian.com