X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=web%2Fruntime;h=d1dabab996859a2a487b5fa71da0898941fc91be;hb=a358cc9a43956e3b5c2a9ac345230fb7a6be377e;hp=b452dec52b3378ea3fe0d00207362374027d939f;hpb=34b2b26e3e313db46127f064f5da1de0c9147423;p=mono.git diff --git a/web/runtime b/web/runtime index b452dec52b3..d1dabab9968 100644 --- a/web/runtime +++ b/web/runtime @@ -1,75 +1,105 @@ * The Mono runtime - The Mono runtime implements a JIT engine for the CIL virtual - machine (as well as a byte code interpreter, this is to - quickly port it to new systems), the class loader, the garbage - collector, threading system and metadata access libraries. + The Mono runtime engine is considered feature complete. + + It implements a Just-in-Time compiler engine for the CIL + virtual machine, the class loader, the garbage collector, + threading system and metadata access libraries. We currently have two runtimes: - Currently we are using the Bohem conservative garbage - collector, but we working on incorporating the ORP GC engine. + We are using the Boehm conservative garbage collector. -* COM and XPCOM + The Mono runtime can be used as a stand-alone process, or it + can be embedded into applications (see + the documentation in mono/samples/embed for more details). - We plan on adding support for XPCOM on Unix and COM on Microsoft - Windows later in our development process. + Embedding the Mono runtime allows applications to be extended + in C# while reusing all of the existing C and C++ code. -** Executing MSIL/CIL images + Paolo Molaro did a presentation on the current JIT engine and + the new JIT engine. You can find his slides + here - The code will load an executable and map the references to - external assemblies to our own version of the assemblies on - Linux. +** Current JIT Engine: technical details (updated, June 28th, 2003) - Our roadmap looks like this, this has been updated as of - Dec 18, 2001: + We have re-written our JIT compiler. We wanted to support a + number of features that were missing: - A setup similar to the Kaffe JIT engine will be used to - layout the code to support non-IA32 architectures. Our work - will be focused on getting a IA32 version running first. + The JIT engine implements a number of optimizations: + + There are a couple of books that deal with this technique: "A Retargetable C Compiler" and "Advanced Compiler Design and @@ -77,7 +107,13 @@ technical description of lbrug. - A few papers that describe the instruction selector: + The new JIT engines uses three intermediate representations: + the source is the CIL which is transformed into a forest of + trees; This is fed into a BURS instruction selector that + generates the final low-level intermediate representation. + + The instruction selector is documented in the following + papers: -** Future plans - - We are evaluating the future directions for the JIT engine: - both from our needs (optimizations like inlining, better register allocation, - instruction scheduling, and porting to other CPUs). - - We have not yet decided how we will evolve the JIT engine. We - might just upgrade our current architecture, and provide optimizations as - an extra layer. - ** Garbage Collection - Currently we are using the Boehm conservative GC. Although our plans - are to move to the Intel ORP GC engine, our plans on a next generation - dual-JIT engine have to be taken into account. - - We will be using the Intel ORP GC engine as it provides a precise + We are using the Boehm conservative GC. We might consider + adopting other GC engines in the future, like the Intel ORP GC + engine. The Intel ORP GC engine as it provides a precise garbage collector engine, similar to what is available on the - .NET environment. - - Although using a conservative garbage collector like Bohem's - would work, all the type information is available at runtime, - so we can actually implement a better collector than a - conservative collector. + .NET environment.