[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?

Piers.

-----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 ! :-)


	Regards,

		Ravi


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
will
> 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
attribute.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
latest
> could work as well, you just need to change in interfaces.cs
> the two spots where DefineType() and DefineNestedType(): change the
"null"
> 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
tokens
> are wrong and this confuses the runtime (we still don't have a
verifier,
> 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
compilation
> (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:
bonus
> 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
windows
> (with mcs) but not on linux. You can also start compiling our test
suite
> (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
compile
> time (it's called 522682 times). Hashtable::KeyEquals() takes about
25%
> 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>
                        <http://primates.ximian.com/~ravi>


_______________________________________________
Mono-list maillist  -  Mono-list@ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list